可以使用ReSharper将'foreach'转换为'for'循环,反之亦然?

时间:2010-06-18 13:23:49

标签: visual-studio resharper for-loop foreach

是否可以使用ReSharper标记foreach循环代码块并将其转换为for循环?

或使用Visual Studio?

谢谢!

3 个答案:

答案 0 :(得分:4)

是的ReShaper可以做到这一点。在VS2010 + R#5中进行了测试

在:

        var a = new int[] {1, 2, 3, 4};
        foreach (var i in a)
        {

        }

后:

    var a = new int[] {1, 2, 3, 4};
    for (int index = 0; index < a.Length; index++)
    {
        var i = a[index];
    }

答案 1 :(得分:1)

您现在甚至可以在没有Resharper的情况下执行此操作(在C#项目上使用Visual Studio 2017测试):

int[] array = new int[3] { 1, 2, 3 };

foreach (int item in array)
{
   int someVariable = item;
   //Your logic
}

成为

int[] array = new int[3] { 1, 2, 3 };

for (int i = 0; i < array.Length; i++)
{
   int item = array[i];
   int someVariable = item;
  //Your logic
}

(反之亦然!) 要进行此更改,只需单击“ foreach”或“ for”一词,然后找到左侧显示的螺丝刀图标,单击它,然后选择“转换为'for'” /“转换为'foreach” '”。 (如果您从未看到此图标,请参见下面的链接)

希望它对某人有所帮助(即使这是很老的帖子!)

Visual Studio screwdriver icon

答案 2 :(得分:-1)

工作得很好,正如rdkleine说的那样,样本效果很好 但是:如果你的收藏是一个简单的IEnumerable<T>它将无法合理地工作。