C# ?? null Coalescing operator

C# ?? null Coalescing operator
Ha nigdy nie mogę tego słówka zapamiętać jak w nim oa i inne samogłoski idą.
Może to odgrzewane kotlety ale dziś przy okazji okazji znalazłam opis takiego operatora - oczywiście na blogu Scotta Gu
    int? number = 10;
    int nu = number.HasValue ? number : 0 ;
Ale przecież nie o tym mowa.
Jednak mowa o tym jak można powyższe zastąpić.
    int? number = 50;
    int res = number ?? 0 ;
    //outcome: res ==55

    int? numberNull = null;
    res = numberNull ?? 0 ;
    //outcome: res ==0    

W skrócie mówiąc operator ?? sprawdza czy wartość po jego lewej stronie jest null'em, jeśli tak - to zwraca alternatywna wartość którą przedstawiamy po jego prawej stronie. Jeśli wartość przedstawiona po lewej zostanie zwrócona przez operator ?? jeśli nie będzie ona null'owa
     Customer cust = getCustomer(id) ?? new Customer();
    // znacznie przydatniejsze niz poniższe którego raczej nie wykorzystamy
     Customer cust = ( null == getCustomer(id) ) ? getCustomer(id) : new Customer();

    // i jeszcze miły przykład z ViewStatem
public string Title
{
  get { return (string)ViewState["title"] ?? "Default title"; }
  set { ViewState["title"] = value; }
}

Ciekawym przykładem jest też użycie tego operatora do zapytań LINQ - przykład zaprezentowany na wyżej wymienionym blogu. Dzięki operatorowi ?? możemy nadać wartość domyślna elementowi zwracanemu z zapytania LINQ.

Cool

Komentarze

Popularne posty