ReSharper 2025.2 Help

提取方法重构

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

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

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# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。

最后修改日期: 2025年 9月 27日