在C#中作为可选参数传递默认值

时间:2012-07-18 16:00:46

标签: c# parameters parameter-passing optional-parameters

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

DoSomething(myParam: default)                         //calling the method

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

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

public void DoSomething() { ... }

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

private void DoSomething();

答案 1 :(得分:1)

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

使用这种通用方法,您可以使用各种重载实现可选参数的相同总体目标:

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); }

这是可选参数的设计目的,但有时候回到这个样板代码可能会更简单,即使它会使代码膨胀。