在C#中有类似PHP的可选参数吗?

Edw*_*uay 2 php c# overloading optional-parameters

使用PHP可选参数,如果不发送参数,则会将其分配给默认值:

public function getCustomer(id, optionalMessage = "(no message)") {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在C#中我通常使用C#方法重载来解决这个问题,例如:

public void GetCustomer(int id) 
{
    ...
}

public void GetCustomer(int id, string optionalMessage)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我错过了实用的PHP变体,C#也有一些含糖的语法来做可选参数,就像在PHP示例中一样吗?

Mar*_*ell 8

不在C#3.0中; 此功能在C#4.0的工作表上 - 请参阅此处.

现在,您将不得不使用不同的重载:

public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}
Run Code Online (Sandbox Code Playgroud)

建议的语法是:

public void Foo(int a, string b = "") {...}
Run Code Online (Sandbox Code Playgroud)

用以下任何一个叫:

Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional  by name
Run Code Online (Sandbox Code Playgroud)