JetBrains Rider 2025.2 Help

代码样式。 C#

在 JetBrains Rider 设置的此页面上,您可以配置 C# 代码样式的各个方面。 代码样式首选项分组在选项卡中,本主题列出了这些选项卡。

自动检测代码样式规则

点击此按钮以开始分析当前解决方案中使用的 格式语法样式 ,并检测与您当前设置不同的规则。 然后,您可以查看检测到的规则,根据需要更改它们,并将其保存到所需的 设置层.editorconfig.clang-format 格式的配置文件中。

制表符、缩进、对齐

此选项卡可帮助您指定 JetBrains Rider 在您输入代码或 重新格式化现有代码 时应如何格式化 代码中的缩进

缩进设置来源

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

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

在多行结构中结合缩进和对齐

如果您的首选项表明应使用空格进行缩进,JetBrains Rider 也会使用空格对齐多个结构——例如,当多行的函数参数按第一个参数对齐时:

void foo(int firstParameter, int secondParameter) { }

然而,当您选择使用制表符进行缩进时,对齐多行结构可能会有不同的方式。 JetBrains Rider 允许您选择在创建新代码和重新格式化现有代码时使用这些方式中的哪一种。

您可以通过 制表符用于缩进时如何对齐 选项配置对齐多行结构的首选项。

使用空格(推荐,在任何制表符大小下看起来都对齐)

选择此选项时,JetBrains Rider 使用制表符进行缩进,使用空格进行对齐:

使用空格(推荐,在任何制表符大小下看起来都对齐)

这是推荐的选项,因为与第二和第三选项对齐的代码在使用不同制表符大小的编辑器中查看时可能会失去对齐。

仅使用制表符(不准确)

选择此选项时,JetBrains Rider 使用制表符进行缩进和对齐,但可能无法实现精确对齐:

仅使用制表符(不准确)
混合制表符和空格以获得最佳填充效果

选择此选项时,JetBrains Rider 使用制表符进行缩进和对齐,并添加必要的空格以实现精确对齐。

混合制表符和空格以获得最佳填充效果

命名

在此选项卡上,您可以为 C# 配置 符号命名规则

JetBrains Rider 帮助您定义、控制和应用代码中符号的命名样式。 有一组规则,每条规则针对具有约束条件的特定标识符(例如,一条规则可以针对静态私有只读字段)。 每条规则可以有一个或多个关联样式,这些样式定义了复合词的大小写、下划线、后缀、前缀等。

当 JetBrains Rider 使用 代码补全代码生成 功能生成新代码时,应用 代码模板 或执行 重构 时,这些规则都会被考虑。 JetBrains Rider 还帮助您 检测并修复命名规则的违规情况。 如果需要,可以 配置或禁用 命名规则的自动检查。

语法样式

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

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

声明中的 'var' 用法

此部分中的首选项定义了 隐式类型的局部变量 (也称为 var 关键字)的使用方式。

您可以为不同类型设置使用 'var' 或显式类型的不同首选项:

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

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

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

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

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

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

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

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

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

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

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

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

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

将 'var' 关键字用于弃元

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

实例成员限定

此部分中的首选项定义了如何使用 'this' 限定符。 有关更多信息,请参见 代码语法样式:可选成员限定符

静态成员限定

此部分中的首选项定义了如何限定静态成员。 有关更多信息,请参见 代码语法样式:可选成员限定符

内置类型

此部分中的首选项定义了如何引用 C# 内置类型 :您可以选择使用 C# 关键字或 CLR 类型名称。 更多信息请参阅 代码语法样式:内置类型引用

引用限定和 'using' 指令

此部分中的首选项定义了 命名空间导入的样式

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

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

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

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

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

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

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

修饰符

此部分的首选项定义了如何排列类型和成员的修饰符。 欲了解更多信息,请参阅 代码语法样式:修饰符

参数

此部分的首选项允许您定义应如何对特定类型的参数强制使用命名或位置参数。 欲了解更多信息,请参阅 代码语法样式:命名/位置参数

圆括号

此部分的首选项允许您定义在何种情况下应移除或添加可选括号,以帮助您明确操作的优先级。 欲了解更多信息,请参阅 代码语法样式:可选括号

大括号

此部分的首选项允许您定义哪些语句需要为单个嵌套语句添加大括号。 欲了解更多信息,请参阅 代码语法样式:单层嵌套语句的大括号

代码主体

此部分的首选项允许您定义哪些类型的成员应使用表达式体声明,哪些应使用块体声明。 有关更多信息,请参见 配置表达式主体函数的偏好设置

默认情况下,JetBrains Rider 使用启发式方法决定是否将方法的块体转换为表达式体。 其中包括,JetBrains Rider 不会为 void 方法以及包含 lambda 表达式的方法建议使用表达式体。

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

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

特性

此部分的首选项定义了如何排列多个属性。 有关更多信息,请参见 代码语法样式:多属性

尾随逗号

此部分的首选项定义了如何处理在包含多个项的声明和类似结构(对象、数组和集合初始化器,以及枚举和 switch 表达式)中的尾随逗号。 欲了解更多信息,请参阅 代码语法样式:尾随逗号

对象创建

此部分的首选项定义了在使用 new 运算符创建新对象时是否添加可选类型说明。 更多信息请参阅 代码语法样式:对象创建('new()' 与 'new T()')

默认值

此部分的首选项定义了在 默认 表达式中是否使用 (T) 可选类型说明。 如需更多信息,请参阅 代码语法样式:默认值表达式('default' 与 'default(T)')

模式

此部分的 null 检查模式样式 定义了在 模式匹配表达式中进行空值检查的样式: { }非 null 表达式。 欲了解更多信息,请参阅 代码语法样式:空值检查模式

大括号布局

使用此选项卡调整 JetBrains Rider 在生成新代码和 重新格式化现有代码时排列大括号的方式;特别是,可以在 iffor 运算符后定位大括号的多种方式。

对于每个项目,页面底部都有一个预览窗格,您可以在调整特定首选项后观察更改。

空行

此选项卡允许您配置 JetBrains Rider 是否应增加或减少命名空间、成员、区域和导入指令组周围的空行数。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。

保留现有格式设置 部分中的选项仅在 JetBrains Rider 重新格式化现有代码时应用,而 空行 部分包含的选项在您键入新代码时也会生效。

换行

使用此选项卡配置 JetBrains Rider 应如何在特定语言结构之前/之后添加或移除换行符,以及是否换行超过 在以下位置硬包装 首选项指定长度的长行。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。

请注意,以 保留现有的... 开头的首选项名称允许您 保留现有格式以用于同一组中的其他首选项。

空格

使用此选项卡配置如何在不同代码结构中插入或移除空格。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。

Null 检查

使用此选项卡自定义为异常和断言生成空值检查例程。

针对异常和断言的空值检查

在某些情况下,遇到 null 引用的对象对您的程序至关重要,应该记录或通过抛出异常发出信号。 这里的一个典型示例是在一个不设计接受 null 对象的函数中抛出 ArgumentNullException

生成针对异常和断言的空值检查

您可以通过以下方式生成这些类型的空值检查:

  • 在参数或表达式上按 Alt+Enter 并选择相应的 上下文操作

    JetBrains Rider:检查参数是否为空
  • 如果参数标记有 [NotNull]属性,您可以将插入点直接放在参数名称或参数类型之后并按

    private void Foo([NotNull] object/*!*/ arg/*!*/)
  • 生成构造函数时(Alt+Insert| 构造函数 ),请在对话框中选择 检查参数是否为 null

  • 要为任何可为空的表达式 null 生成断言,JetBrains Rider 提供了 断言表达式是否为空 操作,位于 Alt+Enter。 根据 可空性分析设置 ,它会显示为 快速修复上下文操作

    JetBrains Rider:断言表达式是否为空

    如果 JetBrains Rider 推断表达式永远不会是 null ,则此操作将不可用。

如果您在项目中 使用代码注解 ,JetBrains Rider 会使用 [NotNull]属性装饰您检查是否为 null 的参数。 这将使 JetBrains Rider 在将 null 对象传递给已装饰的参数时通知您。

您可以通过在 JetBrains Rider 设置 的 编辑器 | 检查设置 | 代码注解 页面上清除 自动传播注解 复选框来禁用添加 [NotNull] Ctrl+Alt+S

配置针对异常和断言的空值检查

此类空值检查可以以不同方式编写,因此可在 JetBrains Rider 设置 Ctrl+Alt+S编辑器 | 代码样式 | C# | 空值检查 页面上进行配置,该页面也可从相应操作的 Alt+Enter 菜单访问:

JetBrains Rider:配置空值检查模式的快捷方式

此 设置 页面按优先级顺序列出了所有预定义的 null 检查模式,优先级较高的模式显示在顶部。 当 JetBrains Rider 生成 null 检查时,它将选择语义上适合上下文的最高优先级模式,同时考虑当前的 C# 版本。

默认情况下,JetBrains Rider 会根据关联的编译器自动检测 C# 版本。 不过,您可以 为项目明确指定目标 C# 版本——在解决方案资源管理器中按下 Alt+Enter ,并在 应用程序 页面的 项目属性 对话框中使用 语言版本 选择器。

要为 解决方案中的所有项目设置 C# 版本,请按照 此处的说明,在解决方案目录中的 Directory.Build.props 文件中指定它。

例如,在默认配置下,'throw expression' 模式 $EXPR$ ?? $EXPR$ ?? new System.ArgumentNullException($NAME$); 的优先级高于 'classic' throw 语句 if ($EXPR$ == null) throw new System.ArgumentNullException($NAME$);。 但如果当前上下文中不允许表达式,JetBrains Rider 将跳过第一个模式并使用第二个模式:

// Press Alt+Enter on 'arg' and choose 'Check parameter for null' private void Foo(object arg) { // as expression is not allowed here, the statement is generated: if (arg == null) throw new ArgumentNullException(nameof(arg)); } // However, in the following case the expression is already there private object myField; private void Foo(object arg) { myField = arg; } // so JetBrains Rider will use the first pattern: private object myField; private void Foo(object arg) { myField = arg ?? throw new ArgumentNullException(nameof(arg)); }

生成断言时也是如此:JetBrains Rider 将使用标记为 可用于断言 的第一个模式。

如果您对生成 null 检查有任何偏好,请使用 设置 页面上的 向上移动 Alt+U /向下移动 Alt+D 按钮提高您偏好的模式的优先级。

创建针对异常和断言的自定义空值检查

如果您的代码库提供了专门用于处理 null 检查的辅助方法,您可能希望通过编辑 设置 页面上以粗体显示的两个自定义模式——自定义(语句)自定义(表达式) ,来创建自己的 null 检查模式:

JetBrains Rider:自定义空值检查模式

默认情况下,这两个模式的优先级最低,这意味着它们永远不会用于生成。 因此,如果您打算使用它们,请将它们上移以提高优先级。

当列表中选择了一个自定义模式时,您可以在页面底部的文本字段中使用 $EXPR$$NAME$$MESSAGE$ 占位符对其进行编辑。 只要模式有效,JetBrains Rider 就会在文本字段下方显示相应的图标。

您还可以勾选 可用于断言 复选框,使模式与 断言表达式是否为空 操作一起工作。

XML 文档

此选项卡帮助您配置一些设置,这些设置控制 JetBrains Rider 如何生成新的 XML 文档注释代码以及如何 重新格式化现有代码。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。

文件布局

此选项卡包含定义在 清理代码时如何重新排序类型成员的模式。 您可以使用默认模式之一或创建自己的模式。 更多信息请参阅 使用文件和类型布局模式重新排列成员

其它

此选项卡帮助配置一些附加设置,这些设置控制 JetBrains Rider 如何处理新代码以及 重新格式化现有代码。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。

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