代码样式。 C#
在 JetBrains Rider 设置的此页面上,您可以配置 C# 代码样式的各个方面。 代码样式首选项分组在选项卡中,本主题列出了这些选项卡。
自动检测代码样式规则
点击此按钮以开始分析当前解决方案中使用的 格式 和 语法样式 ,并检测与您当前设置不同的规则。 然后,您可以查看检测到的规则,根据需要更改它们,并将其保存到所需的 设置层 或 .editorconfig 或 .clang-format 格式的配置文件中。
制表符、缩进、对齐
此选项卡可帮助您指定 JetBrains Rider 在您输入代码或 重新格式化现有代码 时应如何格式化 代码中的缩进。
缩进设置来源
如果有影响您解决方案的 .editorconfig 文件,此选项卡和其他代码样式设置选项卡 上的首选项可能会被 EditorConfig 样式 覆盖。 如果页面上的至少一个首选项被当前文件的 EditorConfig 或 Clang-Format 样式覆盖,您将看到一个黄色警告,每个被覆盖的首选项也会以黄色突出显示。 例如:

在多行结构中结合缩进和对齐
如果您的首选项表明应使用空格进行缩进,JetBrains Rider 也会使用空格对齐多个结构——例如,当多行的函数参数按第一个参数对齐时:
然而,当您选择使用制表符进行缩进时,对齐多行结构可能会有不同的方式。 JetBrains Rider 允许您选择在创建新代码和重新格式化现有代码时使用这些方式中的哪一种。
您可以通过 制表符用于缩进时如何对齐 选项配置对齐多行结构的首选项。
- 使用空格(推荐,在任何制表符大小下看起来都对齐)
选择此选项时,JetBrains Rider 使用制表符进行缩进,使用空格进行对齐:

这是推荐的选项,因为与第二和第三选项对齐的代码在使用不同制表符大小的编辑器中查看时可能会失去对齐。
- 仅使用制表符(不准确)
选择此选项时,JetBrains Rider 使用制表符进行缩进和对齐,但可能无法实现精确对齐:

- 混合制表符和空格以获得最佳填充效果
选择此选项时,JetBrains Rider 使用制表符进行缩进和对齐,并添加必要的空格以实现精确对齐。

命名
在此选项卡上,您可以为 C# 配置 符号命名规则。
JetBrains Rider 帮助您定义、控制和应用代码中符号的命名样式。 有一组规则,每条规则针对具有约束条件的特定标识符(例如,一条规则可以针对静态私有只读字段)。 每条规则可以有一个或多个关联样式,这些样式定义了复合词的大小写、下划线、后缀、前缀等。
当 JetBrains Rider 使用 代码补全 和 代码生成 功能生成新代码时,应用 代码模板 或执行 重构 时,这些规则都会被考虑。 JetBrains Rider 还帮助您 检测并修复命名规则的违规情况。 如果需要,可以 配置或禁用 命名规则的自动检查。
语法样式
此选项卡上可配置的首选项帮助您强制执行 代码语法样式——如何使用可互换的语言语法结构。 当 JetBrains Rider 使用 代码补全和 代码生成功能生成新代码时,应用 代码模板并执行 重构时,会考虑这些首选项。 您还可以通过使用具有相应设置的 代码清理将这些首选项应用于现有代码。
带有 通知方式 选择器的首选项有相应的代码检查功能,如果检查范围内的语法样式与首选样式不同,系统会通知您。 使用选择器,您可以配置检查的 严重性级别。
声明中的 'var' 用法 | 此部分中的首选项定义了 隐式类型的局部变量 (也称为 您可以为不同类型设置使用 'var' 或显式类型的不同首选项:
对于这些首选项中的每一项,您可以选择使用 'var'、显式类型或 显而易见时使用 'var'。 欲了解更多信息,请参阅 代码语法样式:隐式/显式类型('var' 关键字)。 |
为类型证据首选 Roslyn (Visual Studio)逻辑 | 在 配置使用 'var' 关键字与显式类型的首选项时,您可以选择 在明显时使用 'var'。 此选项看起来不言自明,但在某些情况下,可能不清楚什么被认为是“显而易见的”,什么不是。 除此之外,JetBrains Rider 和 Visual Studio 在建议使用 'var' 关键字或显式类型时,对“显而易见”的定义也存在一些差异。 使用此复选框可在上述任何选项中选择 在明显时使用 'var' 时,应用 Visual Studio 的逻辑来建议使用 'var' 或显式类型。 要了解 JetBrains Rider 和 Visual Studio 逻辑之间的差异,请参阅 在显而易见时使用 'var':什么被认为是显而易见的?。 当 |
为析构变量首选单独的声明 | 默认情况下,JetBrains Rider 会建议在 解构声明中对多个 |
将 'var' 关键字用于弃元 | 默认情况下,JetBrains Rider 建议对 丢弃使用独立的 |
实例成员限定 | 此部分中的首选项定义了如何使用 'this' 限定符。 有关更多信息,请参见 代码语法样式:可选成员限定符。 |
静态成员限定 | 此部分中的首选项定义了如何限定静态成员。 有关更多信息,请参见 代码语法样式:可选成员限定符。 |
内置类型 | 此部分中的首选项定义了如何引用 C# 内置类型 :您可以选择使用 C# 关键字或 CLR 类型名称。 更多信息请参阅 代码语法样式:内置类型引用。 |
引用限定和 'using' 指令 | 此部分中的首选项定义了 命名空间导入的样式:
可以在 JetBrains Rider 选项的 页面上配置与命名空间导入相关的其他选项。 |
修饰符 | 此部分的首选项定义了如何排列类型和成员的修饰符。 欲了解更多信息,请参阅 代码语法样式:修饰符。 |
参数 | 此部分的首选项允许您定义应如何对特定类型的参数强制使用命名或位置参数。 欲了解更多信息,请参阅 代码语法样式:命名/位置参数。 |
圆括号 | 此部分的首选项允许您定义在何种情况下应移除或添加可选括号,以帮助您明确操作的优先级。 欲了解更多信息,请参阅 代码语法样式:可选括号。 |
大括号 | 此部分的首选项允许您定义哪些语句需要为单个嵌套语句添加大括号。 欲了解更多信息,请参阅 代码语法样式:单层嵌套语句的大括号。 |
代码主体 | 此部分的首选项允许您定义哪些类型的成员应使用表达式体声明,哪些应使用块体声明。 有关更多信息,请参见 配置表达式主体函数的偏好设置。 默认情况下,JetBrains Rider 使用启发式方法决定是否将方法的块体转换为表达式体。 其中包括,JetBrains Rider 不会为 您可以通过清除 应用样式启发 复选框来简化此逻辑。 在这种情况下,逻辑很简单:如果您选择对某种类型的成员使用表达式体,那么如果该类型成员的声明由单个语句组成,JetBrains Rider 将建议使用表达式体。 命名空间 选项允许您选择是否在包含单个命名空间声明的文件中使用 文件范围命名空间。 |
特性 | 此部分的首选项定义了如何排列多个属性。 有关更多信息,请参见 代码语法样式:多属性。 |
尾随逗号 | 此部分的首选项定义了如何处理在包含多个项的声明和类似结构(对象、数组和集合初始化器,以及枚举和 switch 表达式)中的尾随逗号。 欲了解更多信息,请参阅 代码语法样式:尾随逗号。 |
对象创建 | 此部分的首选项定义了在使用 |
默认值 | 此部分的首选项定义了在 |
模式 | 此部分的 null 检查模式样式 定义了在 模式匹配表达式中进行空值检查的样式: |
大括号布局
使用此选项卡调整 JetBrains Rider 在生成新代码和 重新格式化现有代码时排列大括号的方式;特别是,可以在 if 或 for 运算符后定位大括号的多种方式。
对于每个项目,页面底部都有一个预览窗格,您可以在调整特定首选项后观察更改。
空行
此选项卡允许您配置 JetBrains Rider 是否应增加或减少命名空间、成员、区域和导入指令组周围的空行数。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。
保留现有格式设置 部分中的选项仅在 JetBrains Rider 重新格式化现有代码时应用,而 空行 部分包含的选项在您键入新代码时也会生效。
换行
使用此选项卡配置 JetBrains Rider 应如何在特定语言结构之前/之后添加或移除换行符,以及是否换行超过 在以下位置硬包装 首选项指定长度的长行。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。
请注意,以 保留现有的... 开头的首选项名称允许您 保留现有格式以用于同一组中的其他首选项。
空格
使用此选项卡配置如何在不同代码结构中插入或移除空格。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。
Null 检查
使用此选项卡自定义为异常和断言生成空值检查例程。
针对异常和断言的空值检查
在某些情况下,遇到 null 引用的对象对您的程序至关重要,应该记录或通过抛出异常发出信号。 这里的一个典型示例是在一个不设计接受 null 对象的函数中抛出 ArgumentNullException。
生成针对异常和断言的空值检查
您可以通过以下方式生成这些类型的空值检查:
在参数或表达式上按 Alt+Enter 并选择相应的 上下文操作:

如果参数标记有 [NotNull]属性,您可以将插入点直接放在参数名称或参数类型之后并按 ! :
private void Foo([NotNull] object/*!*/ arg/*!*/)在 生成构造函数时(Alt+Insert ),请在对话框中选择 检查参数是否为 null。
要为任何可为空的表达式
null生成断言,JetBrains Rider 提供了 断言表达式是否为空 操作,位于 Alt+Enter。 根据 可空性分析设置 ,它会显示为 快速修复或 上下文操作。
如果 JetBrains Rider 推断表达式永远不会是
null,则此操作将不可用。
如果您在项目中 使用代码注解 ,JetBrains Rider 会使用 [NotNull]属性装饰您检查是否为 null 的参数。 这将使 JetBrains Rider 在将 null 对象传递给已装饰的参数时通知您。
您可以通过在 JetBrains Rider 设置 的 页面上清除 自动传播注解 复选框来禁用添加 [NotNull] Ctrl+Alt+S。
配置针对异常和断言的空值检查
此类空值检查可以以不同方式编写,因此可在 JetBrains Rider 设置 Ctrl+Alt+S 的 页面上进行配置,该页面也可从相应操作的 Alt+Enter 菜单访问:

此 设置 页面按优先级顺序列出了所有预定义的 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 将跳过第一个模式并使用第二个模式:
生成断言时也是如此:JetBrains Rider 将使用标记为 可用于断言 的第一个模式。
如果您对生成 null 检查有任何偏好,请使用 设置 页面上的 向上移动 Alt+U /向下移动 Alt+D 按钮提高您偏好的模式的优先级。
创建针对异常和断言的自定义空值检查
如果您的代码库提供了专门用于处理 null 检查的辅助方法,您可能希望通过编辑 设置 页面上以粗体显示的两个自定义模式——自定义(语句) 和 自定义(表达式) ,来创建自己的 null 检查模式:

默认情况下,这两个模式的优先级最低,这意味着它们永远不会用于生成。 因此,如果您打算使用它们,请将它们上移以提高优先级。
当列表中选择了一个自定义模式时,您可以在页面底部的文本字段中使用 $EXPR$、 $NAME$、 $MESSAGE$ 占位符对其进行编辑。 只要模式有效,JetBrains Rider 就会在文本字段下方显示相应的图标。
您还可以勾选 可用于断言 复选框,使模式与 断言表达式是否为空 操作一起工作。
XML 文档
此选项卡帮助您配置一些设置,这些设置控制 JetBrains Rider 如何生成新的 XML 文档注释代码以及如何 重新格式化现有代码。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。
文件布局
此选项卡包含定义在 清理代码时如何重新排序类型成员的模式。 您可以使用默认模式之一或创建自己的模式。 更多信息请参阅 使用文件和类型布局模式重新排列成员。
其它
此选项卡帮助配置一些附加设置,这些设置控制 JetBrains Rider 如何处理新代码以及 重新格式化现有代码。 您可以调整值并检查页面底部的预览窗格,以查看您的偏好如何影响代码。