【发布时间】:2012-07-18 16:00:46
【问题描述】:
除了省略参数之外,有没有办法“告诉”带有可选参数的方法使用默认值?我想语法看起来像这样:
DoSomething(myParam: default) //calling the method
public void DoSomething(int myParam = 5) { ... } //method definition
这样做的原因是为了避免这种不带参数的方法的重载之间的歧义。换句话说,我不想调用这个方法:
public void DoSomething() { ... }
提前致谢。
【问题讨论】:
-
最简单的方法是给它们起不同的名字..
-
为什么不带参数的方法和带参数的方法都可选?如果我要尝试使用您的代码,我会对两者之间的区别感到困惑(当然,您应该记录它,然后我可以理解,但我建议您尽可能避免这种情况)。
-
@TimS。 - 我有几个公共方法,如
GetObjectById()GetObjectByName,...等,包括一个包罗万象的GetObject();所有这些都调用使用可选参数的私有GetObject(..)。这是因为这些函数的调用者不支持可选参数。 -
由于
GetObject(..)是私有的,我建议重命名它。 -
@friendlycello 标准做法是使用运行实际代码的所有参数进行一个重载,然后使用许多其他方法来调用一个大重载并指定一个或多个参数.我已经添加了一个带有此示例的答案。
标签: c# parameters parameter-passing optional-parameters