預設引數

如果要提供省略引數的選項,可以使用預設引數:

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);
    }   

警告 :因為它以這種方式工作,所以在某些情況下預設值可能會有問題。如果更改方法引數的預設值並且不重新編譯該方法的所有呼叫方,則這些呼叫方仍將使用編譯時存在的預設值,這可能導致不一致。