默认参数

如果要提供省略参数的选项,可以使用默认参数:

static void SaySomething(string what = "ehh") {
    Console.WriteLine(what);
}  

static void Main() {
    // prints "hello"
    SaySomething("hello"); 
    // prints "ehh"
    SaySomething(); // The compiler compiles this as if we had typed SaySomething("ehh")
}

当你调用此类方法并省略为其提供默认值的参数时,编译器会为你插入该默认值。

请记住,具有默认值的参数需要没有默认值的参数之后写入。

static void SaySomething(string say, string what = "ehh") {
        //Correct
        Console.WriteLine(say + what);
    }

static void SaySomethingElse(string what = "ehh", string say) {
        //Incorrect
        Console.WriteLine(say + what);
    }   

警告 :因为它以这种方式工作,所以在某些情况下默认值可能会有问题。如果更改方法参数的默认值并且不重新编译该方法的所有调用方,则这些调用方仍将使用编译时存在的默认值,这可能导致不一致。