JetBrains Rider 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); } }

如果您想作为参数传递的表达式引用了方法体中声明的变量,JetBrains Rider 允许您通过引入一个泛型委托参数并使用它从调用方传递一个 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. 请执行以下操作之一:

    • 按下 Ctrl+Alt+P

    • Ctrl+Alt+Shift+T 然后选择 引入参数

    • 在主菜单中选择 重构 | 引入参数

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

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

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

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

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

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

JetBrains Rider:'引入参数'重构
最后修改日期: 2025年 9月 26日