是否可以使用ReSharper标记foreach循环代码块并将其转换为for循环?
或使用Visual Studio?
谢谢!
答案 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” '”。 (如果您从未看到此图标,请参见下面的链接)
希望它对某人有所帮助(即使这是很老的帖子!)
答案 2 :(得分:-1)
工作得很好,正如rdkleine说的那样,样本效果很好
但是:如果你的收藏是一个简单的IEnumerable<T>
它将无法合理地工作。