ReSharper 2025.2 Help

引入参数重构

此重构允许您通过添加一个新参数,将表达式从方法实现移动到其调用方。 表达式的所有出现都被替换为新参数;解决方案中对该方法的所有调用都更新为使用新参数。

在下面的示例中,我们使用此重构将两个相同字符串的出现替换为一个参数。 字符串本身被移动到调用方参数中:

abstract class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { LogError(e); } } static void LogError(Exception ex) { Console.WriteLine("Something has failed..."); File.WriteAllText(@"c:\Error.txt", "Something has failed..." + ex); } }
abstract class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { LogError(e, "Something has failed..."); } } static void LogError(Exception ex, string message) { Console.WriteLine(message); File.WriteAllText(@"c:\Error.txt", message + ex); } }

如果您想作为参数传递的表达式引用了方法体中声明的变量,ReSharper 允许您通过引入一个泛型委托参数并使用它从调用方传递一个 lambda 表达式来“封装”这些变量。 在下面的示例中,我们为 "当前时间是:" + currentTme 表达式调用了重构:

static void PrintCurrentTime() { var currentTme = DateTime.Now.ToString("h:mm:ss tt"); Console.WriteLine("The current time is: " + currentTme); } private void Test1() { PrintCurrentTime(); }
static void PrintCurrentTime(Func<string, string> output) { var currentTme = DateTime.Now.ToString("h:mm:ss tt"); Console.WriteLine(output(currentTme)); } private void Test1() { PrintCurrentTime(currentTme => "The current time is: " + currentTme); }

为选定的表达式引入一个参数

  1. 在编辑器中,选择方法或构造函数中的一个表达式。

  2. 执行以下操作之一:

    • Control+Alt+P

    • Control+Shift+R 然后选择 引入形参

    • 右键单击并从上下文菜单中选择 重构 | 引入参数

    • 从主菜单中选择 ReSharper | 重构 | 引入参数…

  3. 如果找到选定表达式的多个出现,ReSharper 会显示下拉菜单,您可以选择将重构应用于所有出现或仅应用于当前出现。

  4. 在出现的 引入形参 对话框中,输入新参数的名称。

  5. 如果选定的表达式是常量或值类型,则可以将该表达式用作引入参数的默认值。 为此,请选中 设为默认 复选框。

  6. 如果选定的表达式依赖于其他变量,这些变量会显示在 选择要转换为 lambda 的变量 部分中。 选择您希望在泛型委托中使用的变量(在这种情况下,这些变量将作为参数添加)。

  7. 要应用重构,请单击 下一步

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

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日