上下文操作

当您需要对代码进行小幅更改时,ReSharper的上下文操作可以帮助您避免许多输入操作。 更改访问修饰符、生成检查null的代码、将foreach转换为for以及反向转换 — 所有操作只需按几次键即可完成。 在C#、VB.NET、XAML、ASP.NET、JavaScript、TypeScript和其他支持的语言中可以使用超过450种上下文操作。 在您想要更改的代码元素上按Alt+Enter,然后选择要应用的上下文操作。

ReSharper的上下文操作

应用上下文操作

只要上下文操作可用于当前脱字符号位置,ReSharper 就会在脱字符号左侧显示锤头图标 ReSharper's context action indicator。 如果有多个可用的上下文功能(它们可能是上下文操作和快速修复的组合),将会显示优先级最高的操作的图标。 点击操作指示器或按Alt+Enter可以查看所有可用操作。

相似的上下文操作(例如,用于不同访问修饰符的操作)通常会组织到一起。 在这种情况下,使用向右箭头展开组可以选择所需的操作。

在更大的范围(文件、项目或解决方案)内应用上下文操作

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

一些上下文操作(Remove #regionsSpecify enum member valuesAdd name to argument,等等)可以在更大的范围内自动应用:在当前方法、类、文件、项目中或在整个解决方案内。 您可以点击右侧的小箭头或按键盘上的向右箭头键,选择在何处应用转换。

快速修复与上下文操作

上下文操作与快速修复

ReSharper 还提供了快速修复(可以在下拉列表中显示)和上下文操作。 它们之间的区别十分明显:快速修复仅针对高亮显示的代码问题显示,旨在修复它们并改进您的代码;而上下文操作则是一些小重构,它们可以简单地更改代码。

需要注意的一点是,快速修复具有更高的优先级,如果脱字符号处有任何快速修复,您需要按Alt+Enter来查看此处是否有任何上下文操作。

使用上下文操作在C#中引入null检查

C#:检查参数是否为null示例

使用ReSharper,您无需输入任何内容即可检查参数是否为null — 只需按Alt+Enter,ReSharper会为您生成完整的null检查例程。

或者,如果您在项目中使用 JetBrains 代码注释,参数将使用 [NotNull] 特性标记,这样一来,ReSharper 会在您为此参数调用包含 null 的方法时发出警告。

使用ReSharper的上下文操作将LINQ转换为代码

C#:将LINQ转换为代码示例

在此示例中,您可以看到ReSharper的上下文操作如何帮助您快速地将LINQ查询转换为foreach循环和lambda表达式。

这是 ReSharper 中将循环转换为 LINQ 语句的著名快速修复的反向操作。

使用ReSharper的上下文操作将迭代器转换为集合

C#:将迭代器转换为集合示例

一些上下文操作更像重构 - 它们会自动处理复杂的代码转换,同时保留逻辑。

在此示例中,ReSharper会帮助您将带有yield return语句的迭代器转换为可以创建、填充并返回集合的代码。

使用ReSharper的上下文操作拆分声明和赋值

C#:拆分声明和赋值示例

如果您需要为现有的局部变量初始化添加条件,此上下文操作会帮助您快速地分离初始化。 即使变量为隐式类型,ReSharper也会自动计算正确的类型并在声明中使用它。

使用ReSharper的上下文操作反转“if”表达式

C#:反转“if”语句示例

使用此上下文操作,您可以快速交换if语句的分支。 无论多么复杂,ReSharper都会确保条件适当地反转,这样逻辑就可以保持不变。

使用ReSharper的上下文操作将匿名方法转换为lambda表达式以及反向转换

C#:将匿名方法转换为lambda以及反向转换示例

无论为委托(匿名方法或lambda表达式)使用哪种语法,ReSharper的上下文操作都可以让您按几次键就能更改语法,无需重新手动编写代码。

使用上下文操作在VB.NET中创建重载

VB.NET:创建不包含参数的重载示例

此上下文操作让您能够创建为选定参数使用默认值的方法重载,而且无需任何手动输入。

此操作也支持在C#和TypeScript中使用。

使用上下文操作转换为JavaScript模板文字

JavaScript:转换为模板字符串示例

ReSharper在JavaScript中提供了大约50种上下文操作。 许多操作与C#中可用的操作类似,但特定于JavaScript语法的操作却很少。 例如,此上下文操作能够帮助您将变量和字符串文字的串联转换为模板文字。

使用上下文操作引入TypeScript类型别名

TypeScript:引入/内联类型别名示例

在TypeScript中,您可以使用所有JavaScript上下文操作,以及大约20种特定于TypeScript的操作。 例如,您可以使用上下文操作为简单、交集或联合类型管理类型别名。

ReSharper在类XML代码中的上下文操作

在类XML代码中的上下文操作示例

在类XML语言中,ReSharper的上下文操作可以帮助您简化展开/折叠空标记和将特性转换为标记及反向转换的常规编辑程序。 可以在XML、XAML、ASP.NET、生成脚本、HTML和Resx文件中使用这些操作。

上下文操作设置

配置上下文操作

如果您不希望ReSharper在上下文菜单中显示特定的上下文操作,可以在ReSharper Options对话框中将其禁用。