1

除了省略参数之外,有没有办法“告诉”带有可选参数的方法使用默认值?我想语法看起来像这样:

DoSomething(myParam: default)                         //calling the method

public void DoSomething(int myParam = 5) { ... }      //method definition

这样做的原因是为了避免这种不带参数的方法的重载之间的歧义。换句话说,我不希望调用此方法:

public void DoSomething() { ... }

提前致谢。

4

2 回答 2

2

如果您不希望用户调用不带参数的 DoSomething 方法,只需将其设为私有,如下所示:

private void DoSomething();
于 2012-07-18T16:03:56.090 回答
2

在这种特殊情况下,您似乎根本不应该使用可选参数。它们旨在让您的生活更轻松。当他们停止这样做时,可能是时候停止使用它们了。

您可以使用以下通用方法通过各种重载实现可选参数的相同通用目标:

public void Foo(int param1, int param2, int param3){ /* actual Foo code goes here */ }

public void Foo(int param1, int param2) { Foo(param1, param2, 5); }

public void Foo(int param1) { Foo(param1, 0, 5); }

public void Foo() { Foo(42, 0, 5); }

这是可选参数旨在避免的,但有时回到这个样板代码会更简单,即使它使代码有点膨胀。

于 2012-07-18T16:23:02.037 回答