C# Language Parametri predefiniti

Esempio

È possibile utilizzare i parametri predefiniti se si desidera fornire l'opzione per omettere i parametri:

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

Quando si chiama un tale metodo e si omette un parametro per il quale viene fornito un valore predefinito, il compilatore inserisce automaticamente il valore predefinito.

Tenere presente che i parametri con i valori predefiniti devono essere scritti dopo i parametri senza valori predefiniti.

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

ATTENZIONE : poiché funziona in questo modo, i valori predefiniti possono essere problematici in alcuni casi. Se si modifica il valore predefinito di un parametro del metodo e non si ricompilano tutti i chiamanti di quel metodo, tali chiamanti continueranno a utilizzare il valore predefinito che era presente al momento della compilazione, probabilmente causando incoerenze.