Visual Studio提供了多个重构,用于在循环和 LINQ 表达式之间转换。 可以通过 快速操作和重构 菜单(Ctrl+.)访问这些重构。
将 for 循环转换为 foreach 语句
applies to: C#,Visual Basic
此重构将 for 循环转换为 foreach 语句。 当不需要循环变量作为索引并想要简化代码时,它非常有用。
注释
转换为 foreach 快速操作重构仅适用于包含所有三个部分的循环:初始值设定项、条件和迭代器。
将插入符号放在关键字中
for。按 Ctrl+。 或单击代码文件的边距中的
图标。
选择“转换为”foreach”。 或者,选择 “预览更改 ”以打开 “预览更改 ”对话框,然后选择“ 应用”。
将 foreach 语句转换为 for 循环
applies to: C#,Visual Basic
此重构会将 foreach 语句转换为 for 循环。 当你需要使用循环变量来访问项或循环访问多维数组时,它很有用。
将插入符号放在或
For Each关键字中foreach。按 Ctrl+。 或单击代码文件的边距中的
图标。
选择“转换为”for”。 或者,选择 “预览更改 ”以打开 “预览更改 ”对话框,然后选择“ 应用”。
由于重构引入了新的迭代计数变量, 因此“重命名 ”框显示在编辑器的右上角。 如果要为变量选择其他名称,请键入该变量,然后按 Enter 或在“重命名”框中选择“应用”。 如果不想选择新名称,请按 Esc 或选择 “应用” 以消除 “重命名 ”框。
注释
对于 C#,这些重构生成的代码对集合中的项的类型使用显式类型或 var 。 生成的代码中的类型(显式或隐式)取决于范围内的代码样式设置。 这些特定的代码样式设置是在 “工具>选项>文本编辑器>C#>代码样式>常规>”首选项下或在 EditorConfig 文件中的解决方案级别配置的。 如果在 “选项”中更改代码样式设置,请重新打开代码文件,使更改生效。
将 foreach 循环转换为 LINQ
适用于: C#
此重构将使用 IEnumerable 的 foreach 循环转换为 LINQ 查询或 LINQ 调用表单(也称为 LINQ 方法)。
注释
LINQ 语法通常比 foreach 循环效率低。 最好了解使用 LINQ 来提高代码的可读性时可能发生的任何性能权衡。
将光标置于关键字中
foreach。
按 (Ctrl.) 触发“快速操作和重构”菜单。
选择“转换为 LINQ”或“转换为 Linq”(呼叫表单)。
代码示例
using System.Collections.Generic;
public class Class1
{
public void MyMethod()
{
var greetings = new List<string>()
{ "hi", "yo", "hello", "howdy" };
IEnumerable<string> enumerable()
{
foreach (var greet in greetings)
{
if (greet.Length < 3)
{
yield return greet;
}
}
yield break;
}
}
}
将 LINQ 转换为 foreach 语句
applies to: C#,Visual Basic
此重构会将 LINQ 查询语法 转换为 foreach 语句。
选择从此开始
from的整个 LINQ 查询。注释
此重构只能用于转换用查询语法表示的 LINQ 查询,而不是方法语法。
按 Ctrl+。 或单击代码文件的边距中的螺丝
图标。
选择“转换为”foreach”。 或者,选择 “预览更改 ”以打开 “预览更改 ”对话框,然后选择“ 应用”。
注释
对于 C#,这些重构生成的代码使用显式类型或 var 作为循环的 foreach 迭代变量。 生成的代码中的类型(显式或隐式)取决于范围内的代码样式设置。 这些特定的代码样式设置是在 “工具>选项>文本编辑器>C#>代码样式>常规>”首选项下或在 EditorConfig 文件中的解决方案级别配置的。 如果在 “选项”中更改代码样式设置,请重新打开代码文件,使更改生效。
简化 LINQ 表达式
适用于: C#
此重构简化了 <
删除对方法枚举的 .Where() 不必要的调用可提高可读性,在某些情况下会提高性能。
将光标置于 Visual Studio
SomeEnumerableType.Where(<LambdaExpression>).Single()实例中。按 (Ctrl.) 触发“快速操作和重构”菜单。
选择 “简化 LINQ 表达式”。