根据其他参数设置可选参数默认值

Max*_*ion 3 c# optional-parameters

我想实现以下场景:

方法:

public void Process(Request request, string statusCode=request.statusCode, string statusVal=request.statusVal) 
{ 
... 
}
Run Code Online (Sandbox Code Playgroud)

显然,上述构造在 C# 中不起作用。

因此,在这种情况下,方法 process 需要 3 个参数,其中调用参数可能会或可能不会在参数中传递 statusCode 和/或 statusVal。

当未传递值时,它应将请求对象中的值作为默认值。简而言之,可选参数的默认值可以是动态的,也可以基于另一个强制参数。

Jas*_*n W 9

以下是您如何使用可选参数的方法:

public void Process(Request request, string statusCode = null, string statusVal= null) 
{ 
    statusCode = statusCode ?? request.statusCode;
    statusVal = statusVal ?? request.statusVal;
    ... 
}
Run Code Online (Sandbox Code Playgroud)

现在您可以通过以下任何一种方式调用它:

  • Process(request);
  • Process(request, "code");
  • Process(request, "code", "val");
  • Process(request, statusCode: "code");
  • Process(request, statusVal: "val");