JetBrains Rider 2025.2 Help

C# 的上下文操作

JetBrains Rider 提供以下 C# 的上下文操作:

名称

描述

向 XML 文档添加 <exception> 标签

将 <exception> 标记添加到 XML 文档

向 XML 文档添加 <inheritdoc /> 标签

添加 <inheritdoc /> 以便从基候选项继承 XML 文档

添加另一个访问器

将第二个访问器添加到事件或属性

为 switch 部分语句添加块大括号

将大括号添加到 switch 部分语句

添加大括号

将大括号添加到语句

添加解构模式组件名称

根据源模式调度类型中的名称添加显式析构模式组件名称

为匿名属性添加显式名称

将显式名称规范添加到匿名类型属性声明

在局部函数前添加显式 'return' 或 'continue'

在成员或循环末尾的局部函数之前添加显式控制流跳转,以便清楚地将可执行代码与帮助函数分隔开

为参数添加名称

将名称添加到所选实参

为最后一个参数添加 'params' 修饰符

将 'params' 修饰符添加到最后一个形参,并通过传递临时集合来更新方法用法

添加字符串格式化方法参数

将新的格式条目添加到格式字符串并将相应的实参添加到格式设置方法调用

有关更多信息,请参见 代码分析和字符串字面量的辅助功能

添加字符串插值参数

向字符串插值表达式添加新参数。 也可用于普通字符串字面量。

添加 TestCase 特性

向 NUnit 测试方法添加 TestCase 特性

添加元组组件名称

根据目标元组类型中的名称添加显式元组组件名称

为模式添加变量指定

为类型测试/null 检查/关系模式引入变量指定,并可能替换相应的 'switch' 部分内的转换

为 '#pragma' 指令添加警告描述注释

将带有警告描述的注释添加到 '#pragma' 指令,通过其 ID 禁用或恢复警告

在原始字符串字面量中添加/移除额外的引号和美元符号

更改原始字符串中引号和美元符号的数量

添加 'switch' 条件组件

添加 'switch' 表达式/语句组件

用 'EnumMemberAttribute' 注释枚举成员

将 'EnumMemberAttribute' 添加到每个枚举成员

用可空性属性注释成员

使用为 null 性特性注解类型成员或形参

用 'DataMemberAttribute' 注释成员

将 'DataMemberAttribute' 添加到所有 public 属性和字段

用 'OperationContractAttribute' 注释方法

将 'OperationContractAttribute' 添加到所有公开的方法

断言引用不为空

添加对文本光标处的变量执行 null 引用检查的断言语句

在 'set' 和 'init' 访问器之间切换

在 'set' 与 'init' 访问器种类之间更改

更改成员可见性

可用于访问修饰符关键字并允许更改声明的访问权限

更改当前成员的签名

更改当前成员的签名

在 'class'/'struct' 和 'record' 类型声明之间切换

在 'class'/'struct' 与 'record' 之间更改类型声明种类,可能会修正一些错误

检查所有字符串参数是否为空或空字符串

检查所有字符串形参是否为 null 或检查空字符串

检查所有字符串参数是否为空或空白字符串

检查所有字符串形参是否为 null 或空格字符串

检查数组索引值

检查数组的索引值

检查集合索引值

检查集合的索引值

检查字典键值

检查字典的键值

检查每个参数是否为空

检查所有函数形参是否为 null

检查枚举参数是否由枚举类型定义

检查函数形参是否由枚举类型定义

检查数值参数是否超出范围

检查数值形参是否在指定范围内

检查参数是否为空集合

检查函数形参是否为空集合

检查参数是否无效

检查函数形参是否有效

检查参数是否为空

检查函数形参是否为 null

检查引用是否不为空

将当前语句置于对文本光标处的变量执行 null 引用检查的 'if' 语句之下

检查字符串参数是否为空或空字符串

检查字符串形参是否为 null 或检查空字符串

检查字符串参数是否为空或空白字符串

检查字符串形参是否为 null 或空格字符串

检查变量是否为空

检查变量是否为 null

检查 Span<T> 索引值

检查 Span<T>/ReadOnlySpan<T> 类型的索引值

检查字符串索引值

检查字符串的索引值

检查 'StringBuilder' 索引值

检查 'StringBuilder' 的索引值

对类列表语言结构应用分行格式化

将截断格式设置应用于列表式语言构造,每个条目之间换行

计算常量值

计算当前表达式的值并进行替换(例如,将 1 + 1 替换为 2)

配置空检查断言模式

打开 ReSharper 选项页面以配置 null 检查模式

配置参数空检查模式

打开 ReSharper 选项页面以配置 null 检查模式

配置变量空检查模式

打开 ReSharper 选项页面以配置 null 检查模式

通过 'StringBuilder' 构造字符串

使用相应的 'Append' 调用将字符串字面量转换为 'StringBuilder' 创建

将 '?:' 条件表达式转换为 'if' 语句

转换值被返回或赋给 'if' 语句的条件表达式

将 '?:' 条件表达式转换为 'switch' 表达式

转换值被返回或赋给 'switch' 表达式的条件表达式

将 '==' 运算符转换为 'Equals()' 调用

将相等运算符('==')的用法转换为对 'Equals' 方法的调用

将 '==' 运算符转换为 'object.ReferenceEquals()' 调用

将相等运算符('==')的用法转换为对 'object.ReferenceEquals' 方法的调用

将匿名方法转换为 lambda 表达式

将匿名方法表达式转换为 lambda 表达式

将匿名类型转换为命名类型

将匿名类型转换为命名类型,并替换其在所选作用域内的用法

将匿名类型转换为元组

将匿名类型转换为元组表达式,并替换其在包含方法中的用法

将数组创建或集合初始化转换为集合表达式

将数组创建或集合初始化表达式转换为 C# 12 集合表达式形式

将自动属性转换为具有默认主体的属性

将自动属性转换为具有默认主体的属性

如需更多信息,请参阅 使用自动属性

在文本和字符串转义序列之间转换

在文本和各种形式的字符串转义序列之间转换

将 'catch (Exception)' 子句转换为 'catch'

将 'catch (System.Exception)' 子句转换为 'catch' 形式

将 'catch' 子句转换为 'catch (Exception)'

将 'catch' 子句转换为 'catch (System.Exception)' 形式

将集合初始化器转换为 'Add' 方法调用

将集合初始值设定项替换为一系列 'Add()' 方法调用

将复合赋值转换为常规赋值

将复合赋值转换为正则赋值

将构造函数转换为工厂方法

将构造函数转换为工厂方法并将用法更新为工厂方法调用

将当前扩展方法转换为普通静态方法形式

通过移除 'this' 修饰符并更新所有方法用法,将当前扩展方法转换为普通的 static 方法形式

将当前方法转换为扩展方法形式

通过添加 'this' 修饰符并更新所有方法用法,将当前方法转换为扩展方法形式

将 'Equals' 方法调用转换为 '==' 运算符用法

将对实例或 static 'Equals' 方法的调用转换为使用相等('==')或不等('!=')运算符

将显式实现转换为隐式实现

将接口方法的显式实现转换为隐式实现

将表达式主体成员转换为语句主体

将表达式体成员声明转换为语句体形式

将表达式 lambda 转换为语句 lambda

将表达式体 lambda 表达式转换为语句体形式

将表达式转换为 'StringBuilder'

将表达式转换为 'StringBuilder'

将表达式转换为 'StringBuilder' 调用

将 'StringBuilder' 内的表达式转换为相应的 'StringBuilder' 调用

将 'ForEach' 方法调用转换为 'foreach' 语句

将 'xs.ForEach(x => ...)' 调用转换为正则 'foreach' 语句

将 'foreach' 转换为 'for' 循环

适用于在允许通过索引直接访问其元素的集合上执行的 'foreach' 语句。 它将此类 'foreach' 语句转换为 'for' 语句。

将 'if' 语句转换为 '?:' 条件表达式

适用于返回值或在每个分支中执行赋值的 'if' 语句。 将语句转换为条件表达式('x ? a : b').

将 'if' 语句转换为 switch case 守卫子句

适用于 switch 部分开头的 'if' 语句,并将其拆分为带有 'if' 内容的临界部分和带有 else 分支的非临界部分

将 'if' 语句转换为 'switch' 表达式

适用于执行类型检查或将表达式的值与一个或多个常量进行比较的 'if' 语句。 将 'if' 语句转换为单个 'switch' 表达式。

将 'if' 语句转换为 'switch' 语句

适用于执行类型检查或将表达式的值与一个或多个常量进行比较的 'if' 语句。 将 'if' 语句转换为单个 'switch' 语句。

将隐式接口实现转换为显式实现

将接口方法的隐式实现转换为显式实现

将整数字面量转换为二进制形式

将整数字面量转换为二进制形式

将整数字面量转换为十六进制形式

将整数字面量转换为十六进制形式

将整数字面量转换为十进制形式

将整数字面量转换为十进制形式

转换为列表模式

将集合长度检查转换为列表模式(例如,'x is { Length: 0 }' -> 'x is []')

将无效的字符字面量转换为字符串

将无效的字符字面量转换为字符串字面量

将迭代器转换为方法

将迭代器转换为具有 List<T> 填充或数组返回的方法或属性

将 lambda 表达式转换为匿名方法

将 lambda 表达式转换为匿名方法表达式

将 LINQ 转换为代码

将 LINQ 转换为代码

将 LINQ 查询转换为方法链调用

将 LINQ 查询转换为扩展方法调用

将成员值检查表达式转换为递归模式

将用于检查某些常量值的成员读取访问替换为相应的模式

将方法组转换为匿名方法

将方法组转换为匿名方法

将方法组转换为 lambda 表达式

将方法组转换为 lambda 表达式

将方法转换为属性

将带有返回值的无形参方法转换为属性声明

将 'Microsoft.Extensions.Logging.ILogger' 扩展方法调用转换为由 'Microsoft.Extensions.Logging.LoggerMessageAttribute' 生成的日志方法调用

将记录器扩展方法调用转换为日志方法

将多行字符串转换为单独的 'AppendLine' 调用

将 'StringBuilder' 内的多行字符串转换为单独的 'AppendLine' 调用

将非空检查转换为对象模式检查

将非 null 检查表达式转换为模式匹配检查

将空合并赋值转换为 if 语句

将 null 合并赋值转换为 if 语句

将空合并表达式转换为 'if' 语句

将 null 合并表达式转换为 'if' 语句

将对象初始化器转换为赋值语句

将对象初始值设定项替换为一系列赋值语句

将对象初始化器转换为构造函数调用

将对象初始值设定项替换为对形参按名称和类型匹配的构造函数的调用

将属性转换为方法

将属性转换为方法声明

将 'ReferenceEquals' 方法调用转换为 '==' 运算符用法

将对 static 'ReferenceEquals' 方法的调用转换为使用相等('==')或不等('!=')运算符

将常规字符串插值转换为原始字符串插值

将正则字符串内插转换为原始字符串内插

将常规字符串字面量转换为原始字符串字面量

将正则逐字字符串字面量转换为原始字符串

将语句主体成员转换为表达式主体

将语句体成员声明转换为表达式体形式

将语句 lambda 转换为表达式 lambda

将语句体 lambda 表达式转换为表达式体形式

将字符串比较转换为 'string.Equals' 调用

将字符串比较转换为 'string.Equals' 方法调用

将字符串插值转换为字符串连接

将字符串内插表达式转换为相应字符串的串联

将字符串插值转换为 'string.Format' 调用

将字符串内插表达式转换为相应的 'string.Format' 方法调用

将字符串字面量转换为字符串插值

将正则或逐字字符串转换为相应种类的字符串内插表达式

将 'string.Format' 转换为字符串插值

将 'string.Format' 调用转换为字符串内插(即使这可能会更改实参求值顺序)

将 'switch' 表达式转换为条件 ?: 表达式

将 'switch' 表达式转换为一系列条件(三元) ?: 表达式

将 'switch' 表达式转换为 'if' 语句

将 'switch' 表达式转换为一条或多条嵌套 'if' 语句,每条语句检查单独的模式

将 'switch' 表达式转换为 'switch' 语句

将 'switch' 表达式转换为 'switch' 语句

将 'switch' 语句转换为 'if' 语句

将 'switch' 语句转换为一条或多条嵌套 'if' 语句,每条语句检查单独的模式

将 'switch' 语句转换为 'switch' 表达式

将 'switch' 语句转换为 'switch' 表达式

转换为数组创建表达式

将 C# 12 集合表达式替换为数组创建表达式语法

转换为集合初始化器

将 C# 12 集合表达式替换为集合初始值设定项语法

转换为 'global using'

将所选 'using' 指令转换为 global using 并将其移至单独文件中

转换为本地函数

将某些成员中使用的 private 方法声明转换为局部函数

转换为非全局 'using'

必要时将 'using' 指令从单独文件移至所有项目文件

将常规字符串插值转换为普通字符串插值

将逐字字符串内插 $@".." 转换为正则 $".."

欲了解更多信息,请参阅 代码分析和字符串字面量的辅助功能

转换为常规字符串字面量

将逐字字符串 @".." 转换为正则字符串 ".."

有关更多信息,请参见 代码分析和字符串字面量的辅助功能

转换为单独的 'Append' 和 'AppendLine' 调用

将单个 'AppendLine' 调用转换为单独的 'Append' 和 'AppendLine' 调用

转换为顶级代码

将 'Program' 类和 'Main' 方法替换为顶层代码

转换为 'try-finally' 语句

将 'using' 语句转换为 'try-finally' 语句

转换为 'using' 声明

将 'using' 语句替换为 'using' 声明

转换为 'using' 语句

将 'using' 变量声明替换为 'using' 语句

转换为逐字字符串插值

将正则字符串内插 $".." 转换为逐字 $@".."

有关更多信息,请参见 代码分析和字符串字面量的辅助功能

转换为逐字字符串字面量

将正则字符串字面量 ".." 转换为逐字字符串 @".."

有关更多信息,请参见 代码分析和字符串字面量的辅助功能

将逐字字符串插值转换为原始字符串插值

将逐字字符串内插转换为原始字符串内插

将逐字字符串字面量转换为原始字符串字面量

将逐字字符串字面量转换为原始字符串字面量

将 'with' 表达式转换为临时变量修改

将结构或记录复制到局部变量,修改其成员,并使用此变量替代 'with' 表达式

复制当前类型声明

更改当前成员的签名

从基成员复制 XML 文档

将 XML 文档从基成员/类型复制到重写成员/类型

创建类型声明的另一部分

必要时将类型标记为 partial 并在新文件中创建新部分

从 'params' 参数参数创建集合表达式

从 'params' 形参实参创建集合表达式

创建派生类型

创建实现接口或继承类的类

创建事件调用器

创建事件调用程序方法

从 'params' 参数创建显式数组创建

通过 'params' 形参实参创建显式数组创建

从 'params' 参数创建显式集合创建

从 'params' 形参实参创建显式集合

为主构造函数创建显式构造函数声明

为记录的主构造函数创建显式构造函数声明

为主构造函数的参数创建显式字段声明

为主构造函数的形参创建显式字段声明

为位置参数创建显式属性声明

为记录的位置形参创建显式属性声明

创建匹配的检查运算符

创建匹配的 checked 运算符

创建不带参数的重载

创建不带指定参数的重载。 调用当前方法。

从表达式创建返回语句

创建值被用作表达式语句的 return 语句

创建单元测试

为目标类创建测试类

解构变量

将变量析构为多个位置组件

删除注释

删除所选注释

删除注释

删除注释

禁用隐式 using

将 'ImplicitUsings' 项目属性设为 'disable',并将隐式 using 复制到所有项目文件

启用“在 'do-while' 语句中强制使用大括号”检查

建议当文本光标位于 'do'、'while' 关键字时启用“在 'do-while' 语句中强制使用大括号”检查

启用“在 'fixed' 语句中强制使用大括号”检查

建议当文本光标位于 'fixed' 关键字上时启用“在 'fixed' 语句中强制使用大括号”检查

启用“在 'fixed' 语句中强制使用大括号”检查

建议当文本光标位于 'fixed' 关键字上时启用“在 'fixed' 语句中强制使用大括号”检查

启用“在 'for' 语句中强制使用大括号”检查

建议当文本光标位于 'for' 关键字上时启用“在 'for' 语句中强制使用大括号”检查

启用“在 'foreach' 语句中强制使用大括号”检查

建议当文本光标位于 'foreach' 关键字上时启用“在 'foreach' 语句中强制使用大括号”检查

启用“在 'if' 语句中强制使用大括号”检查

建议当文本光标位于 'if'、'else' 关键字上时启用“在 'if' 语句中强制使用大括号”检查

启用“在 'lock' 语句中强制使用大括号”检查

建议当文本光标位于 'lock' 关键字上时启用“在 'lock' 语句中强制使用大括号”检查

启用“在 'using' 语句中强制使用大括号”检查

建议当文本光标位于 'using' 关键字上时启用“在 'using' 语句中强制使用大括号”检查

启用“在 'while' 语句中强制使用大括号”检查

建议当文本光标位于 'while' 关键字上时启用“在 'while' 语句中强制使用大括号”检查

在当前解决方案中启用“使用 '!' 抑制可空警告”快速修复

建议当文本光标位于 '!' 令牌上时在当前解决方案中启用“禁止带 '!' 的可以为 null 警告”快速修复

启用“被抑制的可空警告可能隐藏潜在问题”检查

建议当文本光标位于 '!' 运算符上时启用“禁止的可以为 null 警告可能会隐藏底层问题”检查

启用隐式 usings

将 'ImplicitUsings' 项目属性设为 'enable',并从项目文件中移除冗余的 using

启用“局部函数可以设为静态”检查

建议当文本光标位于局部函数 'static' 关键字上时启用“局部函数可被设为 static”检查

启用“结构体成员可以设为只读”检查

建议当文本光标位于 'readonly' 关键字上时启用“结构成员可被设为只读”检查

启用“行尾不必要的空白”检查

建议当文本光标位于尾随空格处时启用“行尾的不必要空格”检查

启用“禁止使用制表符进行缩进”检查

建议当文本光标位于带制表符的空白处时启用“禁止使用制表符缩进”检查

封装延迟字段

如果没有现有属性,则将延迟字段封装到属性中

计算表达式

对简单表达式求值并将其替换为计算的值

将匿名方法表达式提取为局部函数

将匿名方法表达式提取到包含作用域中的局部函数内

将匿名方法表达式提取为命名方法

将匿名方法表达式提取到包含类型的 private 方法中

将 lambda 表达式提取为局部函数

将 lambda 表达式提取到包含作用域中的局部函数内

将 lambda 表达式提取为命名方法

将 lambda 表达式提取到包含类型的 private 方法中

将局部函数提取为常规方法

将局部函数提取到包含类型中的正则方法内,并根据需要提升其闭包

从选定代码中提取方法

从所选表达式或语句创建新方法、属性或局部函数,并将选区替换为函数调用

填充对象初始化器

在对象初始值设定项中初始化字段和属性

查找可空警告抑制

在所选作用域内查找所有可以为 null 警告禁止表达式

修复无效的转义序列

通过转义所有字符来修正字符串中的无效转义序列

修复无效的常规字符串

通过设为逐字,修正字符串中的无效字符

修复正则表达式

修正正则表达式中的无效字符

欲了解更多信息,请参阅 代码分析和字符串字面量的辅助功能

修复字符串插值中的三元表达式

将三元表达式括在圆括号中,以防止内插字符串将其 false 分支解释为格式说明符

翻转调用表达式

翻转当前调用表达式,例如将 'left.Equals(right)' 翻转为 'right.Equals(left)'

翻转运算符参数

翻转所选运算符的左右操作数,例如将 'null == list' 翻转为 'list == null'

翻转关系表达式

翻转当前关系表达式,例如将 'list.Count > 1' 翻转为 '1 < list.Count'

为类型、静态成员或命名空间添加完全限定引用

插入对类型、static 成员或命名空间的引用的完全限定

生成扩展方法以检查枚举标志

生成扩展方法以检查枚举值是否包含指定标志

生成类型模式

生成类型模式

实现抽象成员

适用于接口成员或抽象成员。 搜索需要实现此成员的类,并允许在其中一个类中实现它。

实现自定义事件访问器

添加占位符以为事件自定义实现 'add' 和 'remove' 方法

实现 'INotifyPropertyChanged' 模式

创建方法以使用字符串字面量形参调用 'PropertyChanged' 事件

使用 'using static' 指令导入静态成员

在文件中使用 C# 6.0 'using static' 指令导入类型的 static 成员

将成员访问包含到对象模式中

将 'is'/'switch' 运算符的源表达式中的成员访问替换为相应的模式

从构造函数参数初始化自动属性

可以选择通过构造函数形参创建和初始化自动属性

从构造函数参数初始化字段

可以选择通过构造函数形参创建和初始化字段

从构造函数参数初始化成员

可以选择通过构造函数形参创建构造函数和初始化成员

从构造函数参数初始化非私有字段

通过构造函数形参初始化非 private 字段

内联控制转移语句

将 'return' 或 'continue' 之类的控制传输语句内联到上方语句

内联 out 变量声明

将局部变量声明替换为声明表达式

内联字符串插值参数

将字符串字面量或嵌套字符串内插内联到包含内插字符串中

内联临时变量

使用其他变量/形参的值初始化的内联临时变量,以减少对相同值寻址的不同名称的数量

内联 using 别名

将 'using' 别名内联到使用该别名的上下文中

将变量内联到条件表达式中

将变量内联到条件表达式中,生成模式匹配

插入匿名方法签名

将适当的签名添加到匿名方法的无形参声明中

在整数字面量中插入数字分隔符

在整数字面量的公共位置放置数字分隔符: 在十进制字面量中分隔千分位,在十六进制字面量中分隔 16 位字,在二进制字面量中分隔字节

在实数字面量中插入数字分隔符

放置数字分隔符以分隔 float/double/decimal 类型的实数字面量中的千分位

插入泛型方法调用的类型参数

从方法组表达式中插入泛型方法调用/委托创建的推断类型参数。 当插入点正好位于方法名称末尾时可用。

插入 lambda 表达式参数签名

为隐式类型化 lambda 形参添加显式类型规范

插入 lambda 表达式返回类型规范

为 lambda 表达式添加显式返回值类型规范

在默认字面量后插入类型规范

将默认字面量转换为默认表达式

为选定的表达式引入参数

为所选表达式创建新形参

引入类型别名

为所选类型引入 'using' 别名

为选定的表达式引入变量

为所选表达式创建新变量

反转 '?:' 运算符条件

反转条件并交换 '?:' 条件表达式的分支

反转 'if' 语句

反转 'if' 语句的临界条件并相应地交换分支代码

将扩展方法调用转换为普通静态方法调用

将调用语法从扩展方法更改为 static 方法调用形式

通过 'await foreach' 迭代

生成迭代表达式的 'await foreach' 语句

通过 'foreach' 迭代

生成迭代表达式的 'foreach' 语句

通过 'foreach' 迭代(基于 Live Template)

生成迭代表达式的 'foreach' 语句

将属性合并为单个部分

将特性重新排列到单个部分

将局部变量声明与赋值合并

适用于未初始化声明的变量的赋值。 将声明移动到当前点并将其与赋值合并。

将空检查与赋值合并

将 'if' 语句替换为使用 '??' 运算符和 'throw' 表达式的代码

合并字符串字面量

将两个字符串字面量串联成一个

将局部函数闭包提升为参数

将局部函数闭包通过包含方法的局部变量转换为局部函数的形参

将方法设为 partial

将 private void 方法转换为 partial 方法定义

将字符串字面量标记为字符串插值

将 '$' 添加到正则或逐字字符串而不更改其内容

将文件名与类型名匹配

重命名当前文件,以匹配其中声明的唯一顶层类型的名称

合并解构声明

将析构的声明合并为单个变量声明

合并嵌套的 'if' 语句

将两条嵌套 'if' 语句合并为单条 'if' 语句,用于检查原始条件的合取情况

合并部分成员声明

将分部成员的所有声明合并为单个声明

合并部分类型声明

将 partial 类型的所有声明合并为单个声明

将顺序检查合并为空传播表达式

使用条件访问表达式('?.' 运算符)合并顺序 null/类型检查

将顺序的空值/模式检查合并为单个模式检查

将顺序 null/模式检查合并到单个递归/逻辑模式检查中

迁移到 #nullable enable

将 [NotNull]/[CanBeNull] 特性迁移到编译器 #nullable 上下文和类型注解

将局部函数移动到包含范围的末尾

将局部函数移动到包含范围的末尾,以清晰地将可执行代码与辅助函数的声明分开。 在可能的情况下,用显式控制流跳转(如 'return' 或 'continue')进行分隔。

将注解移动到 partial 声明的其他部分

将注解移动到分部声明的另一部分. 如果注解位于生成的代码中,则会将其复制而不是移动。

将构造函数中的赋值移动到初始化器

将赋值从构造函数移至字段/事件/属性初始值设定项

将声明移动到另一个类型部分

将所选声明范围或单个声明(如果在没有选择声明名称的情况下调用)移至 partial 类型的另一个类型部分

将初始化移动到构造函数

将字段/事件/属性初始值设定项移至构造函数

将局部变量、常量或函数声明移动到外部作用域

将局部变量(带初始化)、局部常量或局部函数声明移至外部作用域

将类型移动到另一个文件以匹配其名称

将当前类型移至另一个文件,使其名称与该类型的名称相匹配

取反逻辑表达式

对逻辑表达式求反

重写虚拟成员

适用于虚拟成员。 搜索可以重写此成员的类,并允许在其中一个或全部类中重写它。

传递字符串插值表达式

将格式方法调用替换为传递字符串插值表达式。 请谨慎使用,因为某些格式方法(例如在日志框架中)并不总是执行参数的格式化,而字符串插值表达式始终会进行求值。

传递 'string.Format' 方法调用

将格式方法调用替换为传递 'string.Format' 方法调用的结果。 请谨慎使用,因为某些格式方法(例如在日志框架中)并不总是执行参数的格式化,而 'string.Format' 始终会生成字符串。

将变量放入 'using' 中

将实现 'System.IDisposable'、'System.IAsyncDisposable' 或可释放模式的类型的变量声明转换为 'using' 语句。 这对于强制管理可释放对象的生命周期非常有用。

为通过 'using static' 指令导入的静态成员添加限定

为在作用域中通过 C# 6.0 'using static' 指令导入的 static 成员用法插入类型限定

移除 #region 和 #endregion 指令

移除 #region 和相应的 #endregion 指令对

欲了解更多信息,请参阅 添加和移除 #region 块

移除参数名称

从所选实参中移除名称

移除大括号

移除代码中一条或多条语句周围的不必要的大括号

移除解构模式组件名称

根据源模式调度类型中的名称移除显式析构模式组件名称

移除数字字面量中的数字分隔符

移除整数或实数字面量中的数字分隔符

移除最后一个参数的 'params' 修饰符

从最后一个形参中移除 'params' 修饰符并更新方法用法

移除冗余的括号

如果圆括号冗余,则将其移除

移除字符串格式化方法参数

从格式方法调用中移除格式字符串条目和相应的格式设置方法实参

有关更多信息,请参见 代码分析和字符串字面量的辅助功能

移除 'switch' 条件组件

移除 'switch' 表达式/语句组件

移除元组组件名称

移除元组表达式中的显式元组组件名称

将类似 '.IfNotNull(x => x.Smth)' 的调用替换为 '?.' 表达式

将 '.IfNotNull(x => x.Smth)' 之类的扩展方法的用法替换为条件访问表达式('?.' 运算符)

将 '?:' 条件运算符替换为空传播表达式

将条件表达式('?:' 运算符)替换为空合并(?? 运算符)或条件访问表达式(?. 运算符)

将数组初始化器替换为表达式

将数组初始值设定项替换为数组创建表达式

将自动实现的属性访问器替换为显式实现的访问器

将没有主体的自动实现的访问器替换为显式实现的访问器

将自动属性替换为带有后备字段的属性

将自动属性替换为使用支持字段的属性

将自动属性替换为带有 'field' 关键字的属性

将自动属性替换为使用匿名字段的属性

将调用链替换为单独的调用

将调用链替换为每个方法的单独调用,并在必要时引入变量

将强制转换表达式替换为安全的 'as' 转换

将正则转换表达式替换为安全的转换 'as' 表达式

将条件访问表达式替换为无条件访问

将条件访问表达式('?.' 运算符)替换为正则无条件访问

将显式类型规范替换为 'var'

允许将类型替换为 'var',即使这样会更改变量的类型

将 'field' 关键字替换为显式字段声明

将属性声明中的 'field' 字段替换为显式字段声明

将 'if' 语句替换为空传播

将 'if' 语句替换为条件访问表达式(null 传播)

将逻辑表达式替换为相等表达式

将逻辑表达式与相等表达式反转

将成员访问替换为条件访问表达式

将成员访问/调用或索引器访问替换为条件访问表达式('?.' 运算符)

将空传播表达式替换为 '?:' 条件运算符

将 null 合并('??' 运算符)或条件访问表达式('?.' 运算符)替换为条件表达式('?:' 运算符)

将空传播表达式替换为 'if' 语句

将 C# 6.0 条件访问表达式替换为 'if' 语句

将带有后备字段的属性替换为自动属性

将使用支持字段的属性替换为自动属性

如需更多信息,请参阅 使用自动属性

将安全的 'as' 转换表达式替换为常规强制转换

将安全的 'as' 转换表达式替换为正则转换表达式

将单独的解构声明替换为单个声明

将单独的析构声明替换为单个声明

将 'var' 替换为显式类型声明

将 'var' 替换为显式类型声明

替换为访问表达式

将简单的递归模式替换为正则或条件属性访问表达式

反转赋值语句

反转赋值语句的源和目标部分

反转 'for' 循环语句

反转 'for' 循环语句中的迭代顺序

反转 'for' 循环语句

反转 'for' 循环语句中的迭代顺序

设置项目的 'ConfigureAwait' 分析模式

设置项目 'ConfigureAwait' 分析模式

设置项目语言级别

设置项目语言级别

排序 'using' 指令

根据语法样式设置对文件中的 'using' 指令进行排序

显式指定数组类型

将显式类型规范添加到数组创建表达式

显式指定创建的类型

显式指定创建的类型

显式指定枚举成员值

将显式值规范添加到所有枚举成员

将 'and' 模式拆分为多个 'is' 表达式或守卫表达式

将逻辑 'and' 模式拆分为一系列 'is' 表达式或临界表达式

将属性拆分为单独的部分

将特性重新排列到单独的部分

将调用链拆分为两部分

将调用链分为两部分,从文本光标处的方法调用开始,并在必要时引入变量

拆分声明列表

适用于声明多个变量的变量声明语句。 它将此类语句拆分为多个语句,每个语句声明一个变量。

将带有 '||' 条件的守卫子句拆分为两个带有守卫子句的 case 标签

适用于守卫子句为两个简单条件的析取('||')的 switch case 标签。 它将 switch 案例标签转换为两个单独的标签。

将带有 '&&' 条件的 'if' 拆分为嵌套的 'if' 语句

适用于条件为两个简单条件的合取('&&')的 'if' 语句。 它将 'if' 语句转换为两个嵌套的 'if' 语句。

将带有 '||' 条件的 'if' 拆分为两个 'if' 语句

适用于条件为两个简单条件的析取('||')的 'if' 语句。 它将 'if' 语句转换为两个具有相同主体的 'if' 语句。

拆分为嵌套模式

创建单独的递归模式以匹配嵌套属性

将列表模式拆分为多个连续检查

将列表模式的子模式提取为由 '&&' 运算符连接的检查

将局部变量声明与初始化拆分

将变量初始值设定项表达式移至单独的赋值语句

将局部变量声明与初始化拆分

将变量声明移至外部作用域

将空传播表达式拆分为顺序检查

将条件访问表达式('?.' 运算符)拆分为顺序 null/类型检查

将 'or' 模式拆分为多个 'is' 表达式或 'switch' 案例

将逻辑 'or' 模式拆分为 'is' 表达式序列或多个 'switch' case

将递归模式拆分为多个连续检查

将递归模式的子模式提取为由 '&&' 运算符连接的检查

将布尔值的 'return' 语句拆分为 'if' 语句

适用于值为布尔类型的 'return' 语句。 它将 'return' 语句转换为一个 'if' 语句,其中包含两个 'return' 语句,分别返回 'true' 和 'false' 值。

将带有 '&&' 条件的 'return' 拆分为守卫 'if' 和 'return'

适用于值为两个简单条件的合取('&&')的 'return' 语句。 它将 'return' 语句转换为带有守卫 'if' 语句和一个 'return' 的形式。

拆分字符串字面量

将字符串字面量拆分为两个字面量

将元组赋值拆分为单独的赋值语句

将带有元组赋值或声明的语句拆分为单独的语句

将带有 '||' 条件的值返回拆分为 'if' 和 'return' 语句

适用于值为两个简单条件的析取('||')的 'return' 语句。 它将 'return' 语句转换为 'if' 和 'return' 语句。

将 'var' 模式拆分为单独的变量声明

将 'var' 模式拆分为单独语句中的变量声明

用 'string.Format' 调用包围字符串字面量

使用 'string.Format()' 方法调用包围字符串字面量

用 "" 包围

创建选区文本的字符串字面量

转换为抽象/虚拟/非抽象/非虚拟成员

将类型成员设为 abstract、virtual 、非 abstract 或非 virtual

转换为块作用域命名空间

将文件作用域的命名空间转换为块作用域的命名空间

转换为显式 'Program' 类

将顶层代码替换为显式 'Program' 类和 'Main' 方法

转换为文件作用域命名空间

将带有块主体的命名空间转换为文件作用域的命名空间

转换为 LINQ to JSON

将 JSON 字符串转换为 JSON.NET 对象

转换为 LINQ to XML

将 XML 字符串转换为 'LINQ to XML' 对象

转换为命名属性模式

在相应的成员上将位置析构模式子句替换为命名属性模式

转换为预编译的 'Regex' 对象

引入字段和 'Regex' 类型的预编译对象

有关更多信息,请参见 正则表达式辅助功能

转换为带有 INotifyPropertyChanged 更改通知的属性

将自动属性转换为 setter 中具有 'INotifyPropertyChanged' 更改通知调用的属性

转换参数

转换形参和返回值

转换参数

转换形参和返回值

取消注释

从代码块中移除注释

欲了解更多信息,请参阅 注释和取消注释代码

使用 'as' 并检查是否为空

将 'if (a is B) { }' 转换为 'var b = a as B; if (b != null) { }' 并更新用法

使用 'ConfigureAwait(false)' 调用

将 'ConfigureAwait(false)' 调用添加到 'await' 上下文中类似任务的表达式

使用显式丢弃声明

将 'var' 添加到弃元声明中,以防止可能与其他名为 '_' 的元素发生冲突

使用显式或隐式元组组件名称

在显式和隐式元组组件名称之间切换。 适用于元组组件引用。

使用格式字符串

将几个字符串和其他对象的串联转换为使用 'String.Format' 方法

欲了解更多信息,请参阅 代码分析和字符串字面量的辅助功能

使用隐式丢弃声明

从弃元声明中移除冗余的 'var' 关键字

使用 'MinBy' 或 'MaxBy'

使用 'MinBy' 或 'MaxBy' 而不是排序并获取 'First' 或 'Last'

使用 'nameof' 表达式捕获实体名称

使用 'nameof' 表达式捕获实体名称,而不是在字符串字面量中对其进行硬编码

使用对象/集合初始化器替代赋值/.Add() 方法调用

将一系列赋值或 'Add()' 调用替换为对象或集合初始值设定项表达式

欲了解更多信息,请参阅 代码检查:在可能的情况下使用对象或集合初始化器

使用位置解构模式

将递归模式的属性模式成员替换为位置析构模式

在解构声明/模式中使用单独的声明

将析构内的单个声明替换为单独的变量声明

为堆栈分配的变量使用 Span<T>

为堆栈分配的变量使用 Span<T>

使用字符串插值

将几个字符串和其他对象的串联转换为使用字符串内插

使用 'System.Environment.NewLine' 值

使用 'System.Environment.NewLine',而不是 "\n", "\r" or "\r\n" 字面量

使用 'System.String.Empty' 值

使用 'System.String.Empty',而不是 "" 字面量

使用目标类型的 new

通过移除显式类型规范简化 'new' 表达式

使用类型别名

尽可能使用所选类型别名

对具有多个变量的解构声明使用 'var (...)' 语法

允许将带有多个变量的声明替换为采用 'var (...)' 语法的显式类型,将其全部设为隐式类型

编写文档

编写声明的 XML 文档

最后修改日期: 2025年 9月 26日