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示例中一样吗?
不在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)