某些C#可选参数的可选规范

某些C#可选参数的可选规范,c#,c#-4.0,optional-parameters,named-parameters,C#,C# 4.0,Optional Parameters,Named Parameters,假设您有一个具有以下签名的方法: public void SomeMethod(bool foo = false, bool bar = true) { /* ... */ } 调用此方法时,是否有方法指定bar而不是foo的值?它看起来像 SomeMethod(_, false); 。。。这就意味着 SometMethod(false, false); 。。。在编译时。这可能吗?使用C#4,您可以通过两种方式为函数指定参数: 位置:始终支持的内容 :您可以指定每个参数的名称并按任意顺序排

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

public void SomeMethod(bool foo = false, bool bar = true) { /* ... */ }
调用此方法时,是否有方法指定
bar
而不是
foo
的值?它看起来像

SomeMethod(_, false);
。。。这就意味着

SometMethod(false, false);
。。。在编译时。这可能吗?

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

  • 位置:始终支持的内容
  • :您可以指定每个参数的名称并按任意顺序排列
  • 对于位置参数,无法仅指定第二个默认参数。 有了命名参数,就没有了。只需省略第一个命名参数

    以下是一个例子:

        static void test(bool f1 = false, bool f2 = false)
        {
            //f1 == false and f2 == true
        }
    
        static void Main(string[] args)
        {
            test(f2: true);
        }
    

    看看命名参数

        SomeMethod(bar: false);
    
    这里有很好的资源: