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

标签 c# php overloading optional-parameters

对于 PHP 可选参数,如果您不发送参数,它将被分配给一个默认值:

public function getCustomer(id, optionalMessage = "(no message)") {
    ...
}

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

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

public void GetCustomer(int id, string optionalMessage)
{
    ...
}

但我想念实用的 PHP 变体,C# 是否也有一些含糖语法来处理可选参数,就像在 PHP 示例中一样?

最佳答案

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

现在,您必须使用不同的重载:

public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}

建议的语法是:

public void Foo(int a, string b = "") {...}

调用任何:

Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional  by name

关于c# - C# 中有类似 PHP 的可选参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650574/

相关文章:

c# - mysql 只返回一个值

php - 为什么在 PHP 变量前使用@?

scala - 带有替代方法的重载方法值

c++ - 编程语言为派生类重新定义方法的能力是什么?

c# - 如何在 C# 中将数据表插入到 Access 数据库中

c# - 为什么 GC System.Threading.OverlappedData 需要这么长时间?

c# - PHP 相当于 C# 字符串格式化

php - 限制嵌套对象深度的 var_dump 实现

php - preg_match 在第一个选择器中选择匹配项

java - 为什么这个静态绑定(bind)不能按我的预期工作?