重新排列代码元素
ReSharper 允许您快速重新排列代码中的表达式、语句、类型成员和其他元素。
运作方式
要重排代码,请按 Ctrl+Shift+Alt ,选择您想要移动的代码元素或选区。 如果移动这些元素是合理的,ReSharper 会向您显示一个工具提示,其中包含可能的移动选项。
如果您在没有选定内容的情况下调用此命令,ReSharper 会自动选择可移动的元素。 有时会进行两个选择。 在这种情况下,一个选择用蓝色高亮显示,另一个用黄色高亮显示。 例如,如果您在函数参数上调用此命令,ReSharper 会进行两个选择:参数本身,您可以相对于其他参数向左或向右移动,以及整个函数,您可以相对于其他类型成员向上或向下移动:

上移 和 下移 命令非常直观——它们可以在特定范围内相对于该范围内的其他元素上下移动元素。 例如,您可以在文件中上下移动类型,在类型中上下移动类型成员,在类型成员或复合语句中上下移动语句,等等。
如果当前元素是其范围内的第一个或最后一个,ReSharper 将不允许您使用上下命令进一步移动它。
左移 和 右移 命令有两个用途:
重新排列通常写在单行中的元素。 例如,您可以左右移动属性、函数参数、表达式中的操作数、赋值语句的部分,等等。 请注意,即使这些元素写在多行中,左右命令也会应用于它们。
将语句移动到直接跟随它的复合语句或区域内(向右移动),或将语句移出复合语句或区域(向左移动)。
尽管 ReSharper 尽量避免无效移动,但仍然存在一些情况,可能会破坏代码的逻辑或编译。 请注意,ReSharper 提供了许多重构功能,帮助您安全地重新排列代码,例如 将类型移动到外部作用域的重构 和 更改签名重构。 如果在移动代码元素后代码损坏,请按 Alt+Enter 并检查可用的 快速修复。 大多数情况下,您会在 操作列表中找到正确的重构。
适用情况
ReSharper 允许您以以下方式移动元素:
类型和类型成员。 请注意,如果符号有 XML 注释,ReSharper 会将它们与符号一起移动。
在当前文件或包含声明中上下移动类型
在类型中上下移动类型成员
基类型左右移动
类型参数左右移动
上下移动类型参数约束
左右移动属性
在声明中左右移动参数,在函数使用中左右移动参数(如果您重新排列函数声明的参数,ReSharper 会建议 更改签名重构 ,确保更改函数所有使用中的参数)。
上下移动属性的 setter 和 getter
语句
赋值语句的部分左右移动
函数或复合语句中的语句上下移动
语句从复合语句中移出(左)或移入紧接的复合语句中(右)
switch 语句中的分支上下移动
在 if-else、try-catch 语句的一个分支或 switch 的一个部分中上下移动语句
在 try-catch 语句中上下移动
catch子句复合语句的结束大括号上下移动(贪婪大括号)。 要移动结束大括号,请将插入点放在大括号外,按 Ctrl+Shift+Alt ,然后使用上下箭头将当前复合语句后续的语句包含在内或将最后一条语句移出。
类型或命名空间的起始或结束大括号也可以作为“贪婪大括号”。 在这种情况下,它将包含/排除嵌套的类型/成员/命名空间。
表达式
表达式中的操作数左右移动
集合和数组初始化中的元素左右移动
在查询表达式中上下移动子句
在范围表达式(C# 8)中左右移动操作数
其他元素
泛型类型/方法声明的类型参数
模板字符串中的参数左右移动
在插值字符串中移动值
行注释和 C 风格注释上下移动
上下移动
#region块,移出或移入另一个#region块上下移动
#region和#endregion指令上下移动文本文件中插入点所在的行
上下移动文本文件中的选区
此功能在以下语言和技术中 受支持:
此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。