C# 快速操作和重构
Visual Studio Code 为您提供了多种重构源代码的方法,以及在您编写代码时生成代码和修复问题的快速修复。要访问它们,请单击出现的“灯泡”图标,或使用 快速修复 命令 ⌘. (Windows, Linux Ctrl+.) 以显示快速修复和重构选项列表。您也可以右键单击编辑器并选择 重构 ⌃⇧R (Windows, Linux Ctrl+Shift+R) 以仅显示重构选项。
支持的重构和快速修复
- 添加
await
- 从成员添加构造函数参数
- 添加
DebuggerDisplay
属性 - 添加显式转换
- 添加文件头
- 添加缺少的
usings
/ imports - 添加命名参数
- 将匿名类型转换为类
- 在自动属性和完整属性之间转换
- 在直接转换和
as
表达式之间转换 - 在
for
循环和foreach
语句之间转换 - 在 Get 方法和属性之间转换
- 在
if
和switch
语句之间转换 - 在常规字符串和逐字字符串之间转换
- 将类转换为记录
- 将本地函数转换为方法
- 将数字字面量转换为十六进制、十进制或二进制数
- 将占位符转换为内插字符串
- 将常规字符串转换为内插字符串
- 将元组转换为结构体
- 封装字段
- 生成比较运算符
- 生成默认构造函数
- 生成参数
- 显式实现所有成员
- 隐式实现所有成员
- 内联方法
- 内联临时变量
- 为表达式引入局部变量
- 引入参数
- 引入
using
语句 - 反转条件表达式和逻辑运算
- 反转
if
- 使成员静态
- 将声明移动到引用附近
- 将类型移动到匹配文件
- 反转
for
语句 - 拆分或合并
if
语句 - 使用显式类型
- 使用隐式类型
- 使用 lambda 表达式或块体
- 使用递归模式
- 包装、缩进和对齐重构
添加 await
功能: 向函数调用添加 await
关键字。
时机: 当您在异步方法中调用函数时。
操作方法
- 将插入符号放在函数调用旁边(很可能以红色下划线显示)。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 添加
await
。
从成员添加构造函数参数
功能: 基于选定的类成员生成带有参数的新构造函数。
时机: 您引入了一个新的构造函数,并希望自动正确地声明它以及所有正确的参数。
原因: 您可以在使用构造函数之前声明它,但此功能会自动生成它。
操作方法
- 突出显示您要作为参数添加到构造函数中的类成员。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 生成构造函数 <classname>(<membertype>、<membertype>、<etc.>)。
添加 DebuggerDisplay 属性
功能: DebuggerDisplay 属性 控制对象、属性或字段在调试器变量窗口中的显示方式。
时机: 您想要在代码中以编程方式固定属性在调试器中。
原因: 固定属性允许您通过将该属性冒泡到调试器中对象属性列表的顶部来快速检查对象的属性。
操作方法
- 将光标放在类型、委托、属性或字段上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单,然后选择 添加
DebuggerDisplay
属性。 DebuggerDisplay
属性与返回默认ToString()
的自动方法一起添加。
添加显式转换
功能: 让您根据用法自动向表达式添加显式转换。
时机: 您需要向表达式添加显式转换,并希望自动正确地分配它。
原因: 您可以手动向表达式添加显式转换,但是此功能会根据代码上下文自动添加它。
操作方法
- 将插入符号放在错误处。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 添加显式转换。
添加文件头
功能: 使用 EditorConfig 向现有文件、项目和解决方案添加文件头。
时机: 您想轻松地向文件、项目和解决方案添加文件头。
原因: 您的团队要求您包含用于版权目的的文件头。
操作方法
- 如果您还没有 EditorConfig,请将其添加到项目或解决方案中。
- 将以下规则添加到您的 EditorConfig 文件:
file_header_template
。 - 将规则的值设置为等于您想要应用的文件头文本。 您可以使用
{fileName}
作为文件名的占位符。 - 将插入符号放在任何 C# 文件的第一行。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 添加文件头。
添加缺少的 using / imports
功能: 让您立即为复制粘贴的代码添加必要的导入或 using 指令。
时机: 从项目中的不同位置或其他源复制代码并将其粘贴到新代码中是很常见的做法。此快速操作查找复制粘贴的代码中缺少的导入指令,然后提示您添加它们。此代码修复还可以添加从项目到项目的引用。
原因: 由于快速操作会自动添加必要的导入,因此您无需手动复制代码需要的 using 指令。
操作方法
- 从文件中复制代码并将其粘贴到新文件中,而不包含必要的 using 指令。 产生的错误会附带一个代码修复,该修复会添加缺少的 using 指令。
- 选择 ⌘. (Windows, Linux Ctrl+.) 以打开 快速操作和重构 菜单。
- 选择 Using <您的引用> 以添加缺少的引用。
添加命名参数
功能: 将命名参数附加到函数调用中指定的参数值。
时机: 如果您有一个有很多参数的方法,则可以添加命名参数以使您的代码更具可读性。
操作方法
- 将光标放在函数调用中的参数中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 添加参数名称 <参数名称>。
将匿名类型转换为类
功能: 将匿名类型转换为类。
时机: 您有一个匿名类型,您想继续在类中构建它。
原因: 如果您仅在本地使用匿名类型,则它们很有用。 随着代码的增长,最好有一种简单的方法将其提升为类。
操作方法
- 将光标放在匿名 (
var
) 类型中。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 转换为类。
在自动属性和完整属性之间转换
功能: 在自动实现的属性和完整属性之间转换。
时机: 属性的逻辑已更改。
原因: 您可以在自动实现的属性和完整属性之间手动转换,但是此功能将自动为您完成工作。
操作方法
- 将光标放在属性名称上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下两个选项中选择
选择 转换为完整属性。
选择 使用自动属性。
在直接转换和 'as' 表达式之间转换
功能: 使用 as
关键字在常规转换和尝试转换之间转换变量。
时机: 当您期望转换在某些情况下失败 (as
) 或者如果您从不期望转换失败(直接转换)。
操作方法
- 将光标放在变量上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下两个选项中选择
选择 更改为转换。
选择 更改为 as
表达式。
在 for 循环和 foreach 语句之间转换
功能: 如果您的代码中有一个 for 循环,则可以使用此重构将其转换为 foreach 语句。
原因: 您可能希望将 for 循环转换为 foreach 语句的原因包括
- 您不在循环内使用局部循环变量,除非将其用作访问项的索引。
- 您想要简化代码并减少初始化程序、条件和迭代器部分中出现逻辑错误的可能性。
您可能希望将 foreach 语句转换为 for 循环的原因包括
- 您想在循环中使用局部循环变量,而不仅仅是访问项。
- 您正在迭代多维数组,并且想要更好地控制数组元素。
操作方法
- 将插入符号放在
foreach
或for
关键字中。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下两个选项中选择
选择 转换为 for
。
选择 转换为 foreach
。
在 Get 方法和属性之间转换
将 Get 方法转换为属性
功能: 让您将 Get 方法转换为属性(以及可选的 Set 方法)。
时机: 您有一个不包含任何逻辑的 Get 方法。
操作方法
- 将光标放在您的 Get 方法名称中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- (可选)如果您有 Set 方法,您也可以此时转换您的 Set 方法。 选择 将 <Get 方法或 Set 方法名称> 替换为属性。
将属性转换为 Get 方法
功能: 让您将属性转换为 Get 方法
时机: 您的属性涉及的不仅仅是立即设置和获取值
操作方法
- 将光标放在您的 Get 方法名称中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 将 <属性名称> 替换为方法。
在 if 和 switch 语句之间转换
功能: 将 if
语句转换为 switch 语句 或 C# 8.0 switch 表达式。
时机: 您想要将 if
语句转换为 switch
语句或 switch
表达式,反之亦然。
原因: 如果您正在使用 if
语句,则此重构可以轻松过渡到 switch 语句或 switch 表达式。
操作方法
- 将光标放在
if
关键字中。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下选项中选择
选择 转换为 switch
语句。
选择 转换为 switch
表达式。
选择 转换为 if
语句。
在常规字符串和逐字字符串之间转换
功能: 让您在常规字符串和逐字字符串文字之间转换。
时机: 您要么想要节省空间,要么在代码中提供更多清晰度。
原因: 将逐字字符串文字转换为常规字符串文字可以帮助节省空间。 将常规字符串文字转换为逐字字符串文字可以提供更多清晰度。
操作方法
- 将插入符号放在常规字符串或逐字字符串文字上
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下选项之一中选择
选择 转换为常规字符串。
选择 转换为逐字字符串。
将类转换为记录
功能: 将您的类转换为 C# 记录。
时机: 当您想要快速将类更改为记录时,该记录专为存储数据和不变性而设计。
操作方法
- 将光标放在类名称上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 转换为位置记录。
将本地函数转换为方法
功能: 将本地函数转换为方法。
时机: 您有一个本地函数,您想在当前本地上下文之外定义它。
原因: 您想将本地函数转换为方法,以便可以在本地上下文之外调用它。 当您的本地函数变得太长时,您可能想要转换为方法。 当您在单独的方法中定义函数时,您的代码更易于阅读。
操作方法
- 将光标放在本地函数中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 转换为方法。
将数字字面量转换为十六进制、十进制或二进制数
功能: 在十六进制、二进制或十进制数之间转换数字。
时机: 当您想要自动将数字转换为所需的基数,而无需手动计算转换时使用。
操作方法
- 将光标放在数字字面量上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择以下选项之一
选择 转换为十进制。
选择 转换为十六进制。
选择 转换为二进制。
将占位符转换为内插字符串
功能: 将 String.Format
格式化的结果字符串(或占位符)转换为内插字符串。
时机: 当您想要快速获得内插字符串时使用。
原因: 内插字符串可以为您提供更易读的 String.Format
版本,并允许您直接访问变量名称。
操作方法
- 将光标放在
String.Format
占位符上。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 转换为内插字符串。
将常规字符串转换为内插字符串
功能: 将常规字符串更改为内插字符串。
时机: 当您想要清理代码并使其更具可读性时使用。
操作方法
- 将光标放在要转换的字符串上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 转换为内插字符串。
将元组转换为结构体
功能: 将您的元组转换为 struct
时机: 当您想要快速将元组更改为 struct
并且想要拥有您想要多次访问的固定数据时使用。
操作方法
-
将光标放在元组上。
-
按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
-
选择以下选项之一
- 选择 转换为
struct
-> 更新包含成员中的用法 - 选择 转换为
struct
-> 更新包含类型中的用法 - 选择 转换为
struct
-> 更新包含项目中的用法 - 选择 转换为
struct
-> 更新依赖项目中的用法
- 选择 转换为
封装字段
功能: 让您将字段转换为属性,并更新该字段的所有用法以使用新创建的属性。
时机: 您想要将字段移动到属性,并更新对该字段的所有引用。
原因: 您想让其他类访问某个字段,但不希望这些类具有直接访问权限。 通过将字段包装在属性中,您可以编写代码来验证分配的值,例如。
操作方法
- 将光标放在要封装的字段名称内。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择以下选项之一
选择 封装字段:<字段名称>(并使用属性)。
选择 封装字段:<字段名称>(但仍然使用字段)。
生成比较运算符
功能: 让您为实现 IComparable
的类型生成比较运算符。
时机: 您有一个实现 IComparable
的类型,我们将自动添加比较运算符。
原因: 如果您正在实现值类型,则应考虑重写 Equals
方法,以获得比 ValueType
上 Equals
方法的默认实现更高的性能。
操作方法
- 将光标放在类内部或 IComparable 关键字上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从下拉菜单中选择 生成比较运算符。
生成默认构造函数
功能: 让您立即生成类上新的默认构造函数的代码。
时机: 您引入了一个新的默认构造函数,并希望自动正确地声明它。
原因: 您可以在使用构造函数之前声明它,但此功能会自动生成它。
操作方法
- 将光标放在类名称上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 生成构造函数 <类名>()。
生成参数
功能: 自动生成方法参数。
时机: 您在当前上下文中不存在的方法中引用了变量并收到错误; 您可以生成一个参数作为代码修复。
原因: 您可以快速修改方法签名而不会丢失上下文。
操作方法
- 将光标放在变量名称中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 生成参数。
显式实现所有成员
功能: 在类中显式定义接口的方法。 显式接口实现是仅通过指定的接口调用的类成员。
时机: 在以下情况下使用
- 您不希望为多个接口调用相同的实现。
- 您想要解决两个接口各自声明同名但成员类型不同的成员(例如属性和方法)的情况。
操作方法
- 将光标放在类中实现的接口上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 显式实现所有成员
隐式实现所有成员
功能: 在类中隐式定义接口的方法。 隐式接口实现是指接口的方法和属性直接作为公共方法添加到类中。
操作方法
- 将光标放在类中实现的接口上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 实现接口
内联方法
功能: 内联方法重构。
时机: 您想要将单个语句主体中静态方法、实例方法和扩展方法的使用替换为其主体代码,并可以选择删除原始方法声明。
原因: 此重构提供了更清晰的语法。
操作方法
- 将插入符号放在方法的使用位置。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下选项之一中选择
选择 内联 <QualifiedMethodName> 以删除内联方法声明
选择 内联并保留 <QualifiedMethodName> 以保留原始方法声明
内联临时变量
功能: 让您删除临时变量,并将其替换为其值。
时机: 临时变量的使用使代码更难理解。
原因: 删除临时变量可能会使代码更易于阅读。
操作方法
- 将光标放在要内联的临时变量内。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 内联临时变量。
为表达式引入局部变量
功能: 让您立即生成局部变量以替换现有表达式。
时机: 您的代码可以轻松地在以后重用(如果它位于局部变量中)。
原因: 您可以多次复制和粘贴代码以在不同位置使用它,但是最好执行一次操作,将结果存储在局部变量中,然后在整个过程中使用局部变量。
操作方法
- 将插入符号放在要分配给新局部变量的表达式上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下选项中选择
选择 引入局部变量 -> 为 <表达式> 引入局部变量
选择 引入局部变量 -> 为 <表达式> 的所有出现位置引入局部变量
引入参数
功能: 让您立即生成新参数以替换现有表达式。
时机: 您的代码可以轻松地在以后重用(如果它位于参数中)。
原因: 您可以多次复制和粘贴代码以在不同位置使用它,但是最好执行一次操作,将结果存储在参数中,然后在整个过程中使用该参数。
操作方法
- 将插入符号放在要分配给新参数的表达式上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下选项中选择
选择 为 <表达式> 引入参数 -> 并直接更新调用站点
选择 为 <表达式> 引入参数 -> 进入提取的方法
选择 为 <表达式> 引入参数 -> 进入新的重载
引入 using
语句
功能: 向您的 IDisposable
实例添加 using
语句/代码块。
时机: 您有一个 IDisposable
实例,您想确保它被正确地获取、使用和释放。
操作方法
- 将插入符号放在要分配给新参数的表达式上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 引入
using
语句。
反转条件表达式和逻辑运算
功能: 让您反转条件表达式或条件 and
\ or
运算符。
时机: 您有一个条件表达式或条件 and
\ or
运算符,如果反转,则更容易理解。
原因: 手动反转表达式或条件 and
\ or
运算符可能需要更长的时间,并可能引入错误。 此代码修复可帮助您自动执行此重构。
操作方法
- 将光标放在条件表达式或条件
and
\or
运算符中。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 反转条件 或 将
&&
替换为||
反转 if
功能: 让您反转 if
或 if else
语句,而不会更改代码的含义。
时机: 当您有一个 if
或 if else
语句,反转后会更容易理解时。
原因: 手动反转 if
或 if else
语句可能需要更长的时间,并可能引入错误。 此代码修复可帮助您自动执行此重构。
操作方法
- 将光标放在
if
或if else
语句中。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 反转
if
。
使成员静态
功能: 使成员静态。
时机: 您希望将非静态成员设为静态成员。
原因: 静态成员提高了可读性:知道特定代码是隔离的,使其更易于理解、重新阅读和重用。
操作方法
- 将插入符号放在成员名称上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择 设为静态。
将声明移动到引用附近
功能: 让您将变量声明移动到更靠近其用法的位置。
时机: 您有变量声明,这些声明可以在更窄的作用域内。
原因: 您可以保持现状,但这可能会导致可读性问题或信息隐藏。这是一个重构以提高可读性的机会。
操作方法
- 将光标放在变量声明中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择将声明移至引用附近。
将类型移动到匹配文件
目的: 允许您将所选类型移动到具有相同名称的单独文件中。
时机: 当您在同一文件中拥有多个类、结构、接口等,并且想要将它们分离时。
原因: 将多种类型放在同一文件中可能会使查找这些类型变得困难。通过将类型移动到同名文件中,代码变得更具可读性且更易于导航。
操作方法
- 将光标放在类型名称的定义位置内。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择将类型移动到 <typename>.cs。
反转 for 语句
目的: 允许您反转 for
语句。
时机: 当您想要反转 for
语句的含义及其迭代方式时使用。
原因: 手动反转 for
语句可能需要更长时间,并且可能引入错误。此代码修复可帮助您自动执行此重构。
操作方法
- 将光标放在
for
语句中。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择反转
for
语句。
拆分或合并 if 语句
目的: 拆分或合并 if
语句。
时机: 当您想要将使用 &&
或 ||
运算符的 if
语句拆分为嵌套的 if
语句,或者将 if
语句与外部 if
语句合并时。
原因: 这只是风格偏好问题。
操作方法
如果您想要拆分 if
语句
- 将光标放在
if
语句中&&
或||
运算符旁边。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择拆分为嵌套的
if
语句。
如果您想要将内部 if
语句与外部 if
语句合并
- 将光标放在内部
if
关键字中。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择与嵌套的
if
语句合并。
使用显式类型
目的: 使用此重构将局部变量声明中的 var
替换为显式类型。
原因: 为了提高代码的可读性,或者当您不想在声明中初始化变量时。
但是,var 必须在变量使用匿名类型初始化,并且稍后访问对象的属性时使用。有关更多信息,请参阅 隐式类型的局部变量 (C#)。
操作方法
- 将插入符号放在
var
关键字上。 - 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择使用显式类型代替
var
。
使用隐式类型
目的: 使用此重构将局部变量声明中的显式类型替换为 var
。
原因: 为了符合您的个人编码约定并减少显示的代码量。Var 必须在变量使用匿名类型初始化,并且稍后访问对象的属性时使用。有关更多信息,请参阅 隐式类型的局部变量 (C#)。
操作方法
- 将插入符号放在显式类型关键字上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择使用隐式类型。
使用 lambda 表达式或块体
目的: 允许您重构 lambda 表达式以使用表达式主体或块主体。
时机: 当您希望 lambda 表达式使用表达式主体或块主体时。
原因: 可以重构 Lambda 表达式以根据您的用户偏好提高可读性。
操作方法
- 将光标放在 lambda 运算符的右侧。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择以下选项之一
选择对 lambda 表达式使用块主体。
选择对 lambda 表达式使用表达式主体。
使用递归模式
目的: 将代码块转换为使用递归模式。此重构适用于 switch 语句、属性模式匹配、元组模式匹配和位置模式匹配。
时机: 使用递归模式可以使您的代码更具可读性和更简洁。
操作方法
- 将光标放在要转换为递归模式的表达式上。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择以下选项之一
选择将 switch
语句转换为表达式。
选择使用递归模式。
包装、缩进和对齐重构
包装和对齐调用链
目的: 允许您包装和对齐方法调用链。
时机: 当您有一个由一个语句中的多个方法调用组成的长链时。
原因: 当长列表根据用户偏好进行包装或缩进时,阅读起来更容易。
操作方法
- 将光标放在任何调用链中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择包装调用链或包装并对齐调用链以接受重构。
包装、缩进和对齐参数或自变量
目的: 允许您包装、缩进和对齐参数或实参。
时机: 当您有一个具有多个参数或实参的方法声明或调用时。
原因: 当长参数或实参列表根据用户偏好进行包装或缩进时,阅读起来更容易。
操作方法
- 将光标放在参数列表中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 从以下选项中选择
选择包装每个参数 -> 对齐包装后的参数
选择包装每个参数 -> 缩进所有参数
选择包装每个参数 -> 缩进包装后的参数
包装二元表达式
目的: 允许您包装二元表达式。
时机: 当您有一个二元表达式时。
原因: 当二元表达式根据用户偏好进行包装时,阅读起来更容易。
操作方法
- 将光标放在二元表达式中。
- 按 ⌘. (Windows, Linux Ctrl+.) 以触发 快速操作和重构 菜单。
- 选择包装表达式以接受重构。