上下文操作

当您需要对代码进行小幅更改时,ReSharper的上下文操作可以帮助您避免许多输入操作。 更改访问修饰符、生成检查null的代码、将foreach转换为for以及反向转换 — 所有操作只需按几次键即可完成。 在C#、VB.NET、XAML、ASP.NET 和其他支持的语言中可以使用超过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中使用。

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

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

In XML-like languages, ReSharper's context actions help you streamline routine editing procedures of expanding/collapsing empty tags, and converting attributes to tags and back. 可以在XML、XAML、ASP.NET、生成脚本、HTML和Resx文件中使用这些操作。

上下文操作设置

配置上下文操作

If you don't want ReSharper to show a particular context action in the context menu, you can disable it in the ReSharper Options dialog.