C# 中有类似 PHP 的可选参数吗?
使用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 示例中所示?
with PHP optional parameters, if you don't send a parameter it will be assigned to a default value:
public function getCustomer(id, optionalMessage = "(no message)") {
...
}
in C# I generally solve this with C# method overloading, e.g.:
public void GetCustomer(int id)
{
...
}
public void GetCustomer(int id, string optionalMessage)
{
...
}
but I miss the pragmatic PHP variant, does C# also have some sugary syntax to do optional parameters as well, as in the PHP example?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
C# 3.0 中没有; 此功能位于 C# 4.0 的工作表上 - 请参阅此处。
现在,您必须使用不同的重载:
建议的语法是:
使用以下任意一项调用:
Not in C# 3.0; this feature is on the sheet for C# 4.0 - see here.
For now, you'll have to use different overloads:
The proposed syntax would be:
called with any of:
不,但您可以在一定程度上模拟它们,特别是如果您的可选参数属于同一类型(或者您不介意进行一些转换)。
您可以使用 params 标志。
但我应该指出,这会失去类型安全性,并且不会对参数或顺序进行类型强制。
No, but you can simulate them to an extent, particularly if your optional parameters are of the same type (or you don't mind doing some casting).
You can use the params flag.
I should point out though, this loses type safety, and there is no type enforcement of the parameters or order.