Menü Bezárás

Mire jó a ?? operátor C#-ban?

A null ellenőrző operátor (null-coalescing operator), azaz a „??”, a bal oldalán lévő változóra, kifejezésre, avagy operandusra, vizsgál rá, hogy annak az értéke null-e. Hogyha null, akkor a ?? jelek jobb oldalán lévő kifejezés értékét fogja visszaadni.

Példa

Természetesen, hogyha a bal oldalon lévő kifejezés nem null, a jobb oldali kifejezésünk nem kerül kiértékelésre. Ha a bal oldali értékünk null, valamint a jobb oldali értékünk is, akkor null-t kapunk eredményül.

public object Pet
{
    get
    {
        return cat ?? dog;
    }
}

Az imént említett példában a Pet tulajdonságunk (property) van egy getter blokkja, ami vagy a cat, vagy a dog mező (field) értékét adja vissza. Ha a cat mező értéke null, a macska, ha a dog mező akkor pedig a kutya értéke kerül visszaadásra.

public object Pet
{
    get
    {
        return cat ?? dog ?? bird;
    }
}

A következő példában a bird mezőt is hozzáfűztük a null ellenőrzéseinkhez. Fontos megjegyezni, hogy a kiértékelés balról jobbra halad, tehát ha a cat null, akkor a dog értékét adjuk vissza, hacsak az nem null, ha null, akkor pedig a bird értékét.

Lazy loading, avagy betöltés csak megszólításra

Természetesen van lehetőség arra is, hogy metódust, vagy esetleg egy másik tulajdonság getter blokkját írjuk a ?? operátor bal, illetve jobb oldalára. A C# programozási nyelvben gyakran szoktuk használni ezt az operátort lazy loading (betöltés kérésre) típusú betöltésre tulajdonság lekérésénél.

A következő cikkünkben részletesebben olvashatsz a Lazy Loading használatáról:

Források:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-coalescing-operator

Posted in C#

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük