5

假设您有一个具有以下签名的方法:

public void SomeMethod(bool foo = false, bool bar = true) { /* ... */ }

调用此方法时,有没有办法为bar而不是指定值foo?它看起来像......

SomeMethod(_, false);

...这将转化为...

SometMethod(false, false);

...在编译时。这可能吗?

4

2 回答 2

10

看一下命名参数。

    SomeMethod(bar: false);
于 2010-05-20T18:13:09.417 回答
2

使用 C#4,您可以通过 2 种方式为函数指定参数:

  1. 位置:始终支持的内容
  2. Named:可以指定每个参数的名称,并按任意顺序排列

对于位置参数,无法仅指定第二个默认参数。有命名参数。只需省略第一个命名参数。

这是一个例子:

    static void test(bool f1 = false, bool f2 = false)
    {
        //f1 == false and f2 == true
    }

    static void Main(string[] args)
    {
        test(f2: true);
    }
于 2010-05-20T18:13:06.813 回答