后缀模板
后缀模板帮助您转换已经输入的表达式,而无需向后跳转——只需在表达式后输入一个点,然后从 自动完成列表 中选择一个模板。
应用后缀模板
后缀模板最简单的示例之一是对布尔表达式取反。 假设您刚刚输入了一个布尔表达式,然后意识到比较逻辑需要反转。 通常,您需要将光标移回并将 == 更改为 != 或反之,然后返回到原来的位置。 使用 JetBrains Rider,您只需继续输入 .非 并按下
输入
。
还有 更多的后缀模板可供使用,以加快编码速度。 例如,您可以用 if、 while、 锁定、 示意图 包裹当前表达式,在当前表达式前添加 返回、 yield return、 await ,遍历集合,生成 switch 语句,将表达式转换为特定类型,甚至为表达式引入字段或属性。
后缀模板甚至可以改变您的输入习惯。 请考虑下面的 CheckInput 方法,并想象您将如何输入空值检查子句。
现在让我们看看如何使用后缀模板完成此操作。
当您的光标位于方法体中时,您可以立即开始输入 输入 ,因为这是您想要检查的内容。 当 输入 出现时,只需继续输入 .null——一个用于检查 null 的后缀模板:

这将把 输入 与 null 进行比较,并将比较包裹在 if 语句中,同时将光标放置在可以继续输入的位置:

现在,您可以直接输入异常类名称,而不是输入 throw ,并在其后调用 .throw 模板:

应用此模板后,您将获得完整的 throw 语句,并将光标放置在可以输入参数的位置:

您可以看到,与手动输入常用的语言结构相比,在许多情况下,您只需输入模板快捷方式的几个初始字符,就可以将所有内容正确格式化并放置到位,无需拼写错误。
应用后缀模板
在当前表达式后输入一个点,并在自动完成列表中检查所需的模板。
如果您知道要应用的模板的快捷方式,请开始输入它——这将缩小建议列表的范围。
一旦在建议列表中选择了所需的模板,按下 输入 。
如果模板具有 可编辑参数 (即需要用户输入),JetBrains Rider 会在编辑器中部署一个 热区会话 ,并将输入位置设置为第一个参数。 然后,您可以执行以下操作:
如果 JetBrains Rider 为当前参数建议了一些值,请使用 上 和 下 箭头键浏览建议值列表,或者直接键入所需的值。
按 标签页 或 输入 接受值并移动到下一个参数的输入位置。 如果这是最后一个参数,会话热点将完成,插入点将移动到为会话定义的结束位置。
按 Shift+Tab 键 将输入焦点移动到上一个参数的输入位置。
按 Esc 退出热区会话。 在这种情况下,所有会话参数将使用默认值初始化。
后缀模板列表
快捷方式 | 描述 | 示例 |
|---|---|---|
.arg | 用调用包裹表达式 |
|
.await | 等待 'Task' 类型的表达式 |
|
用 UE 类型转换包裹表达式 | 用类型转换包裹表达式 |
|
.else | 检查布尔表达式是否为 'false' |
|
.field | 为表达式引入字段 |
|
.for | 使用索引遍历集合 |
|
.foreach | 遍历可枚举集合 |
|
.forr | 使用索引反向遍历集合 |
|
.if | 检查布尔表达式是否为 'true' |
|
.inject | 引入特定类型的主构造函数参数 |
|
.lock | 用锁块包裹表达式 |
|
.new | 生成类型的实例化表达式 |
|
.not | 对布尔表达式取反 |
|
检查表达式是否非空 | 检查表达式是否非空 |
|
检查表达式是否为空 | 检查表达式是否为空 |
|
用括号包裹当前表达式 | 用括号包裹当前表达式 |
|
解析字符串为某种类型的值 | 解析字符串为某种类型的值 |
|
为表达式引入属性 | 为表达式引入属性 |
|
.return | 从当前函数返回表达式 |
|
选择编辑器中的表达式 | 选择编辑器中的表达式 |
|
.switch | 生成 switch 语句 |
|
抛出 'Exception' 类型的表达式 | 抛出 'Exception' 类型的表达式 |
|
将当前表达式赋值给某个变量 | 将当前表达式赋值给某个变量 |
|
尝试解析字符串为某种类型的值 | 解析字符串为某种类型的值 |
|
用 typeof() 表达式包裹类型使用 | 用 typeof() 表达式包裹类型使用 |
|
用 using 语句包裹资源 | 用 using 语句包裹资源 |
|
为表达式引入变量 | 为表达式引入变量 |
|
当布尔语句为 'true' 时进行迭代 | 当布尔语句为 'true' 时进行迭代 |
|
从迭代器方法中返回值 | 从迭代器方法中返回值 |
|
快捷键 | 描述 | 示例 |
|---|---|---|
生成范围的迭代器 | 从范围生成迭代器 |
|
用 UE 类型转换包裹表达式 | 用 UE cast 环绕表达式 |
|
.cbeg..cend | 生成范围的迭代器 |
|
.co_await | 将表达式作为参数传递给 co_await |
|
从当前协程返回表达式 | 从当前协程返回表达式 |
|
.co_yield | 将表达式作为参数传递给 co_yield |
|
用 const_cast 包裹表达式 | 用 const_cast 包裹表达式 |
|
用 do 包裹表达式 | 迭代直到布尔表达式为 'false' |
|
用 dynamic_cast 包裹表达式 | 用 dynamic_cast 包裹表达式 |
|
.else | 检查布尔表达式是否为 'false' |
|
遍历集合 | 遍历范围 |
|
.forward | 转发函数参数 |
|
.if | 检查布尔表达式是否为 'true' |
|
.make_shared | 构造一个对象并将其包装在 std::shared_ptr 中 |
|
.make_unique | 构造一个对象并将其包装在 std::unique_ptr 中 |
|
.new | 生成类型的实例化表达式 |
|
.reinterpret_cast | 用 reinterpret_cast 环绕表达式 |
|
.return | 从当前函数返回表达式 |
|
.safe_cast | 用 safe_cast 包裹表达式(C++/CLI) |
|
.static_cast | 用 static_cast 环绕表达式 |
|
.switch | 生成针对整型/枚举类型的 switch |
|
为表达式引入变量 | 为表达式引入变量 |
|
当布尔语句为 'true' 时进行迭代 | 当布尔表达式为 'true' 时进行迭代 |
|