ReSharper 2025.2 Help

语法样式

ReSharper 选项:代码编辑 | C# | 语法样式

此页面上可配置的首选项可帮助您强制执行 代码语法样式——如何使用可互换的语言语法结构。 当 ReSharper 使用 代码补全代码生成功能生成新代码时,应用 代码模板并执行 重构时,这些首选项会被考虑在内。 它们还可以通过使用具有相应设置的 代码清理应用于现有代码。

带有 通知方式 选择器的首选项有相应的代码检查,如果检查范围内的语法样式与首选样式不同,它会通知您。 使用选择器,您可以配置检查的 严重性级别

在完成时应用语法样式

使用此复选框在接受 代码补全建议时应用配置的语法样式。

声明中的 'var' 用法

本节中的偏好定义了 隐式类型的局部变量 (也称为 var 关键字)的使用方式。

您可以为不同类型设置使用 'var' 或显式类型的不同偏好设置:

  • 对于内置类型 — 适用于 C# 内置类型

  • 对于简单类型 — 适用于没有泛型参数的类型。

  • 其他位置 — 适用于泛型类型和解构声明。

对于这些偏好设置中的每一个,您可以选择使用 'var'、显式类型或 显而易见时使用 'var'

更多信息请参阅 代码语法样式:隐式/显式类型('var' 关键字)

为类型证据首选 Roslyn (Visual Studio)逻辑

配置 'var' 关键字与显式类型的使用偏好时,您可以选择 在明显时使用 'var'。 此选项看起来不言自明,但在某些情况下可能不清楚什么被认为是“显而易见的”,什么不是。

除此之外,ReSharper 和 Visual Studio 在建议使用 'var' 关键字或显式类型时,对“显而易见”的定义也存在一些差异。

使用此复选框在上述任何选项中选择 在明显时使用 'var' 时应用 Visual Studio 的逻辑来建议 'var' 或显式类型。

要了解 ReSharper 和 Visual Studio 逻辑之间的差异,请参见 在显而易见时使用 'var':什么被认为是显而易见的?

EditorConfig 中的 csharp_style_var_when_type_is_apparent 属性设置为 true 并具有某些严重级别时,此复选框会自动启用。 例如: csharp_style_var_when_type_is_apparent = true:warning

为析构变量首选单独的声明

默认情况下,ReSharper 会建议在 解构声明中对多个 var 使用合并表示法,例如 var (x, y) = GetTuple();。 您可以选择 为析构变量首选单独的声明 以选择分离表示法,例如 (var x, var y) = GetTuple();

将 'var' 关键字用于弃元

默认情况下,ReSharper 建议对 丢弃使用独立的 _ ,例如 (_, _) = (0, 1);。 您可以选择 将 'var' 关键字用于弃元 以始终在适当的情况下与丢弃一起使用 var ,从而确保与作用域中可能命名为 _ 的变量没有冲突。

实例成员限定

本节中的偏好定义了如何使用 'this' 限定符。 更多信息请参阅 代码语法样式:可选成员限定符

静态成员限定

本节中的偏好定义了如何限定静态成员。 更多信息请参阅 代码语法样式:可选成员限定符

内置类型

本节中的偏好定义了如何引用 C# 内置类型 :您可以选择使用 C# 关键字或 CLR 类型名称。 有关更多信息,请参阅 代码语法样式:内置类型引用

引用限定和 'using' 指令

本节中的首选项定义了 命名空间导入的样式

  • 首选完全限定引用 — 如果您更喜欢对导入的类型使用完全限定名称而不是命名空间导入指令,请选中此复选框。

  • 将 'using' 指令添加到最深的作用域——如果选中此复选框,命名空间导入指令将添加到使用导入类型的命名空间内;否则,导入指令将添加到文件顶部。

  • 对 'using' 指令排序时先放置 'System.*' 和 'Windows.*' 命名空间——如果选中此复选框,类似于 using System.Linq; 的 'using' 指令将在排序时放置在其他 'using' 指令上方。 否则,这些指令将与其他指令按字母顺序排序。

  • 首选在嵌套作用域内使用完全限定名称——如果选中此复选框,在嵌套类型和命名空间中更倾向于使用导入类型的完全限定名称。

  • 允许使用别名指令 — 选中此复选框允许在命名空间导入指令中使用别名,而不是完全限定的命名空间名称。

  • 允许使用 'global::' 前缀——如果选中此复选框, global:: 前缀不会被移除,如 global::System.String 中所示。 有关更多信息,请参阅 :: 运算符 - 命名空间别名运算符

与命名空间导入相关的其他选项可以在 ReSharper 选项的 代码编辑 | C# | 命名空间导入 页面上配置。

修饰符

本节中的偏好定义了如何排列类型和成员的修饰符。 更多信息请参阅 代码语法样式:修饰符

实参

本节中的偏好允许您定义应如何对特定类型的参数强制使用命名或位置参数。 更多信息请参阅 代码语法样式:命名/位置参数

圆括号

本节中的偏好允许您定义在何时移除或添加可选括号,以帮助您明确操作的优先级。 更多信息请参阅 代码语法样式:可选括号

大括号

本节中的偏好允许您定义哪些语句需要为单个嵌套语句添加大括号。 更多信息请参阅 代码语法样式:单层嵌套语句的大括号

代码主体

本节中的偏好允许您定义哪些类型的成员应使用表达式体声明,哪些应使用块体声明。 更多信息请参阅 配置表达式主体函数的偏好设置

默认情况下,ReSharper 使用启发式方法决定是否将方法的块体转换为表达式体。 除此之外,这意味着 ReSharper 不会为 void 方法以及包含 lambda 表达式的方法建议使用表达式体。

您可以通过清除 应用样式启发 复选框来简化此逻辑。 在这种情况下,逻辑很简单:如果您选择对某种类型的成员使用表达式体,ReSharper 将建议使用表达式体,只要此类成员的声明由单个语句组成。

命名空间 选项允许您选择是否在包含单个命名空间声明的文件中使用 文件范围命名空间

特性

本节中的偏好定义了如何排列多个属性。 更多信息请参阅 代码语法样式:多个属性

尾随逗号

本节中的偏好定义了如何处理在具有多个项的声明和类似结构(对象、数组和集合初始化器,以及枚举和 switch 表达式)中的尾随逗号。 更多信息请参阅 代码语法样式:尾随逗号

对象创建

本节中的偏好定义了在使用 new 运算符创建新对象时是否添加可选的类型说明。 有关更多信息,请参阅 代码语法样式:对象创建('new()' 与 'new T()')

默认值

本节中的偏好定义了是否在 default 表达式中使用可选的类型说明 (T)。 有关更多信息,请参阅 代码语法样式:默认值表达式('default' 与 'default(T)')

模式

本节中的 null 检查模式样式 定义了在 模式匹配表达式中进行空值检查的样式: { }not null 表达式。 有关更多信息,请参阅 代码语法样式:空值检查模式

如果有 .editorconfig 文件影响您的解决方案,此页面上的偏好可能会被 EditorConfig 样式覆盖。 如果页面上的至少一个偏好被当前文件的 EditorConfig 或 Clang-Format 样式覆盖,您将看到一个黄色警告,每个被覆盖的偏好也会以黄色突出显示。 例如:

被 EditorConfig 样式覆盖的代码样式选项

从编辑器更改代码语法样式

您还可以通过按下 Alt+Enter 在样式违规被突出显示的地方,直接在编辑器中更改特定的语法样式偏好。 例如,您可以更改简单类型声明中 'var' 使用的偏好

更改 'var' 关键字的代码样式偏好

...以及相应检查的 严重性级别

更改检查的严重性级别

请注意,当您从编辑器中更改偏好时,您的更改将使用 智能保存逻辑保存。

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