如何在C#中跳过可选参数?

时间:2011-01-07 21:24:42

标签: c# optional-parameters

示例:

public int foo(int x, int optionalY = 1, int optionalZ = 2) { ... }

我想这样称呼它:

int returnVal = foo(5,,8); 

换句话说,我想提供xz,但我想使用默认YoptionalY = 1.

Visual Studio不喜欢,,

请帮忙。

4 个答案:

答案 0 :(得分:59)

如果这是C#4.0,您可以使用命名的参数功能:

foo(x: 5, optionalZ: 8); 

有关详细信息,请参阅this blog

答案 1 :(得分:16)

在C#4.0中,您可以在跳过默认值之后命名参数:

int returnVal = foo(5, optionalZ: 8);

这被称为named arguments。其他几种语言提供了这一功能,并且通常使用语法foo(5, optionalZ=8)代替它们,这对于了解何时阅读其他语言的代码很有用。

答案 2 :(得分:1)

提供选择参数的另一种动态方法是在类中实现方法,并为类构造函数提供命名参数。为什么不在这里提到的同一行代码上添加对方法的调用:How to define named Parameters C#

  

var p = new PersonInfo {Name =“Peter”,Age = 15} .BuildPerson();

答案 3 :(得分:0)

这是一个较晚的答案,但对于了解此问题的人而言。 也可以使用重载,该重载与方法/函数的名称相同,但参数集不同。

ea

int SummAll (int a=0, int b=1, int c=2)
{return a+b+c;}

int SumAll (int a=0;int c=10) //skipping B 
{return a+c; }

此模式等同于我们如何通过智能浏览功能的变化。