ReSharper 2026.2 Help

提取方法重构

此重构允许您基于选定的代码片段创建一个新方法或一个局部函数。 ReSharper 分析选定的语句,并检测可以转换为方法参数或表示其返回值的变量。

请参考以下示例。 方法 PrintReversed() 实际上执行了两项操作:它反转字符串并打印它。 我们可以选择反转逻辑,即除 Console.WriteLine(reversed); 之外的所有语句,并使用此重构将该逻辑移动到一个新的 ReverseStr() 方法中。

static void PrintReversed(string input) { var chars = input.ToCharArray(); Array.Reverse(chars); var reversed = new string(chars); Console.WriteLine(reversed); }
static void PrintReversed(string input) { var reversed = ReverseStr(input); Console.WriteLine(reversed); } private static string ReverseStr(string input) { var chars = input.ToCharArray(); Array.Reverse(chars); var reversed = new string(chars); return reversed; }

从选定的语句中提取方法

  1. 在编辑器中,选择一个或多个您希望转换为方法的语句。

  2. 执行以下操作之一:

    • 按 Control+Alt+M。

    • 按 Alt+Enter 并选择 提取方法。

    • 按下 Control+Shift+R 然后选择 提取方法。

  3. 在打开的弹出窗口中,选择 提取方法。

  4. 会出现一个对话框,您可以在其中配置提取的方法:

    ReSharper。 提取方法重构
  5. 在 名称 字段中为新方法输入一个名称。

  6. 在 返回 列表中选择 ReSharper 检测到的一个可能的返回值表达式。 可能还有其他被检测为可能返回值的表达式。 它们被列为 out 参数。

  7. 使用 形参 区域中的相应复选框包含或排除参数。 如果您从列表中排除了一个参数,则会在必要时创建具有相同名称和类型的局部变量。

  8. 要更改参数的顺序,请在列表中选择一个参数并使用 上移 和 上移 按钮。

  9. 选择 设为静态 和/或 设为虚拟 以向方法添加相应的修饰符。

  10. 如有必要,请在 可见性 列表中更改方法的可见性。

  11. 在 预览 字段中检查生成的方法的签名和主体。

  12. 要应用此重构,请单击 下一步。

  13. 如果未发现冲突,ReSharper 会立即执行重构。 否则,它会提示您 解决冲突。

从选定的语句中提取局部函数

  1. 在编辑器中,选择一个或多个您希望转换为局部函数的语句。

  2. 执行以下操作之一:

    • 按 Control+Alt+M。

    • 按 Alt+Enter 并选择 提取方法。

    • 按下 Control+Shift+R 然后选择 提取方法。

  3. 在打开的弹出窗口中,选择 提取局部函数。

  4. ReSharper 将向您显示新函数的签名和位置的预览。

    ReSharper:提取局部函数重构

    使用 上 和 下 键盘键更改函数的目标位置,然后按 输入 。

  5. 会出现一个对话框,您可以在其中配置提取的局部函数:

    ReSharper。 提取方法重构
  6. 在 名称 字段中为新局部函数输入一个名称。

  7. 在 返回 列表中选择 ReSharper 检测到的一个可能的返回值表达式。 可能还有其他被检测为可能返回值的表达式。 它们被列为 out 参数。

  8. 使用 形参 区域中的相应复选框包含或排除参数。 如果您从列表中排除了一个参数,则会在必要时创建具有相同名称和类型的局部变量。

  9. 要更改参数的顺序,请在列表中选择一个参数并使用 上移 和 上移 按钮。

  10. 在 预览 字段中检查生成的局部函数的签名和主体。

  11. 要应用此重构,请单击 下一步。

  12. 如果未发现冲突,ReSharper 会立即执行重构。 否则,它会提示您 解决冲突。

此功能在以下语言和技术中是 支持的:

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

功能在 C# 中可用

此功能适用于 Visual Basic

在 C++ 中提取方法

功能在 ASP.NET 中不可用

功能在 Razor 中不可用

功能在 XAML 中不可用

此功能不适用于资源文件

此功能不适用于构建脚本文件

功能在 SQL/NoSQL 文件和注入中不可用

此处提供的说明和示例介绍了在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相关主题。

2026年 7月 16日