JetBrains Rider 2025.2 Help

上下文操作

上下文操作是直接在编辑器中可用的代码转换助手。 与 快速修复不同,上下文操作并不旨在解决问题或改进您的代码,而是允许您快速引入一些小的更改,例如更改访问修饰符、生成检查 null 的代码、将 'foreach' 转换为 'for' 等。

JetBrains Rider 在所有支持的语言中提供了数百种上下文操作。 You can find the full list on the 编辑器 | 上下文操作 page of JetBrains Rider 设置 Ctrl+Alt+S and in the 上下文操作列表.

应用上下文操作

一旦某个上下文操作可用于当前插入点位置,JetBrains Rider 会在插入点左侧显示相应的 操作指示器 ThemedIcon.ContextAction.Screen.(Gray).png。 然而,有时 JetBrains Rider 会为当前插入点位置提供多个上下文相关的功能。 在这种情况下,与优先级最高的操作对应的操作指示器会显示,其他所有操作仅在您通过单击操作指示器或按下 Alt+Enter 展开 操作列表 时才会出现。上下文操作的优先级最低,因此它们通常出现在操作列表的底部。

操作列表

在大多数情况下,上下文操作会立即应用。 然而,有些操作需要用户交互以选择具体如何转换您的代码。 在这些情况下,会在编辑器中部署一个 热点会话 ,您可以在其中选择建议的值之一或在活动输入位置提供您自己的值。

例如,当您应用 通过 'foreach' 遍历集合 上下文操作时,会发生以下情况:

上下文操作. foreach 1

创建 foreach 语句后,一个热点会话会帮助您完成生成语句的可编辑参数:

上下文操作. foreach 2

完成热点会话的方法:

  • 如果 JetBrains Rider 为当前参数建议了一些值,请使用 箭头键浏览建议值列表,或者直接键入所需的值。

  • 标签页 输入 接受值并移动到下一个参数的输入位置。 如果这是最后一个参数,会话热点将完成,插入点将移动到为会话定义的结束位置。

  • Shift+Tab 键 将输入焦点移动到上一个参数的输入位置。

  • Esc 退出热区会话。 在这种情况下,所有会话参数将使用默认值进行初始化。

配置上下文操作

禁用上下文操作

  1. 按下 Ctrl+Alt+S 或从菜单中选择 文件 | 设置 (Windows 和 Linux)或 JetBrains Rider | 首选项 (macOS)。

  2. 使用 设置/首选项 对话框中的搜索字段查找特定的上下文操作。

    或者,打开 编辑器 | 上下文操作 页面,查找您想要禁用的上下文操作。

  3. 清除上下文操作旁边的复选框以禁用它。

  4. 在 设置 对话框中点击 保存 以应用修改,并让 JetBrains Rider 选择保存位置,或者通过从 保存 选择器中选择特定设置层来保存修改。 如需了解更多信息,请参见 基于层的设置

为上下文操作分配快捷键

  1. 在编辑器中,将文本光标放置在触发 上下文操作 的代码处,您要为其分配快捷方式,然后点击灯泡图标或按下 Alt+Enter

    可用建议列表打开。

  2. 在列表中,点击 所需的 上下文操作 旁边,并从展开的菜单中选择 分配快捷键…

  3. 键盘快捷键 对话框打开时,按下您想要用于此操作的快捷键,然后点击 确定

之后,您无需打开建议列表即可在编辑器中应用此 上下文操作—只需按下配置的快捷键即可立即执行。

您可以在设置中找到所有自定义 上下文操作 快捷方式:按 Ctrl+Alt+S ,点击 按键映射 ,并找到 意图 类别。

在更广的范围内应用上下文操作

某些上下文操作可以在更大的范围内自动查找并更改类似的代码项——当前文件、当前项目或整个解决方案中。 这些上下文操作的工作方式与 在范围内修复 相同。 例如,您可以将当前文件中的所有类型移动到新的匹配文件中:

在更广的范围内应用上下文操作

可以在更广范围内应用的上下文操作的完整列表包括:

C++

  • 按声明顺序对定义排序

C#

  • 添加另一个访问器

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

  • 添加大括号

  • 添加析构模式组件名称

  • 添加匿名属性的显式名称

  • 为参数添加名称

  • 添加元组组件名称

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

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

  • 截断列表式语言构造的格式设置

  • 将匿名类型转换为元组

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

  • 将集合初始值设定项转换为 'Add' 方法调用

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

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

  • 将表达式转换为 'StringBuilder'

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

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

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

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

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

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

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

  • 将非 null 检查转换为对象模式检查

  • 将对象初始值设定项转换为赋值语句

  • 将对象初始值设定项转换为构造函数调用

  • 将字符串内插转换为字符串串联

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

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

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

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

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

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

  • 转换为数组创建表达式

  • 转换为集合初始值设定项

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

  • 转换为 'using' 语句

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

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

  • 将 'with' 表达式转换为临时变量变更

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

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

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

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

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

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

  • 删除评论

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

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

  • 内联临时变量

  • 内联 using 别名

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

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

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

  • 插入泛型方法调用类型实参

  • 插入 lambda 表达式形参签名

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

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

  • 将扩展方法作为普通 static 方法进行调用

  • 将特性加入单个部分

  • 联接局部变量声明和赋值

  • 将顺序检查合并到 null 传播表达式中

  • 将顺序 null/模式检查合并到单个模式检查中

  • 迁移到 #nullable enable

  • 将注解移动到分部声明的另一部分

  • 将构造函数中的赋值移至初始值设定项

  • 将类型移至另一个文件以匹配其名称

  • 限定通过 'using static' 指令导入的 static 成员

  • 移除 #region 和 #endregion 指令(参见 添加和移除 #region 块

  • 移除参数名称

  • 移除析构模式组件名称

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

  • 移除多余的括号(请参见 代码语法样式:可选括号

  • 移除元组组件名称

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

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

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

  • 将自动属性替换为属性和支持字段

  • 将自动属性替换为属性和 'field' 关键字

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

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

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

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

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

  • 替换为访问表达式

  • 对 'using' 指令排序

  • 指定创建的类型

  • 指定枚举成员值

  • 将 'and' 模式拆分为多个 'is' 表达式或临界表达式

  • 将特性拆分为单独的部分

  • 拆分为嵌套模式

  • 将 list 模式拆分为多个连续的检查

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

  • 将 'or' 模式拆分为多个 'is' 表达式或 'switch' case

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

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

  • 转换为块作用域的命名空间

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

  • 替换为命名属性模式

  • 使用 'ConfigureAwait(false)' 调用

  • 使用显式弃元声明

  • 使用隐式弃元声明

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

  • 使用对象/集合初始值设定项代替赋值/.Add() 方法调用

  • 使用位置析构模式

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

  • 使用字符串内插

  • 使用目标类型的 new

  • 为具有多个变量的析构声明使用 'var (...)' 语法

TypeScript

  • 将类型移至另一个文件以匹配其名称

Unity

  • 转换为命名程序集定义引用

VB.NET

  • 使用字符串内插

上下文操作列表

使用以下链接查看特定语言可用的上下文操作完整列表:

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