如何跳过C#中的可选参数?
例如:如何跳过C#中的可选参数?,c#,optional-parameters,C#,Optional Parameters,例如: public int foo(int x, int optionalY = 1, int optionalZ = 2) { ... } 我想这样称呼它: int returnVal = foo(5,,8); int returnVal = foo(5, optionalZ: 8); 换句话说,我想提供x和z,但我想使用Y的默认值,可选Y=1。 Visual Studio不喜欢, 请提供帮助。在C#4.0中,您可以在跳过默认值后命名参数,如下所示: int returnVal =
public int foo(int x, int optionalY = 1, int optionalZ = 2) { ... }
我想这样称呼它:
int returnVal = foo(5,,8);
int returnVal = foo(5, optionalZ: 8);
换句话说,我想提供x
和z
,但我想使用Y
的默认值,可选Y=1。
Visual Studio不喜欢,
请提供帮助。在C#4.0中,您可以在跳过默认值后命名参数,如下所示:
int returnVal = foo(5,,8);
int returnVal = foo(5, optionalZ: 8);
这被称为。其他几种语言提供此功能,通常使用语法foo(5,optionalZ=8)
,这在阅读其他语言的代码时非常有用。如果这是C#4.0,则可以使用命名参数功能:
有关更多信息,请参阅。提供所选参数的另一种动态方法是在类中实现方法,并向类构造函数提供命名参数。为什么不在这里提到的同一行代码中添加对方法的调用: var p=newpersoninfo{Name=“Peter”,Age=15}.BuildPerson()
这是一个迟来的回答,但对于那些进入这个领域的人来说。 也可以使用重载,即使用与方法/函数相同的名称,但使用不同的参数集 ea
这个模式相当于使用intellicense我们可以浏览各种函数。@Ardman:如果OP开始使用可选参数,那么他必须使用C#4:)作为记录,我认为将它们命名为参数更准确。参数总是有名字的@Jon我同意这会更有意义,但是为什么每个人(包括@Josiah和我提供的链接)都使用命名参数这个术语呢?使用谷歌作为比较,“命名参数”返回的结果是“命名参数”返回的结果的两倍(使用引号)。@marcog-@marcog:不是每个人都这样:)很多人这样做,因为一些有影响力的作家无疑早就这样做了。这并不意味着跟随他们的领导是正确的。特别是,规范使用了术语“命名参数”-参见第7.5.1节。不要混淆C#4语言和C#4编译器。只要使用c#4编译器编译,就可以针对.NET3.5使用可选参数