Operatori noi in C#

Posted by anghelvalentin on September 26, 2019

Daca am invatat ceva despre C# este ca e un limbaj care se imbunatateste in fiecare an. Chiar mi se intampla uneori sa mai prind cate o solutie mai veche care folosea un .NET Framework aparut inainte sa fiu eu in facultate si care bineinteles nu avea imbunatatirile aparute ulterior. Chiar am reusit o data sa imi crape un build de CdaaS deoarece folosisem un operator mai nou. De aceea, despre ce iti vorbesc eu in continuare poti sa folosesti fara probleme in proiectele noi, dar in proiectele vechi trebuie sa verifici ce versiune de C# foloseste proiectul si din ce versiune de limbaj este operatorul pe care il folosesti. Doi dintre cei mai folositi operatori recent adaugati sunt cei legati de valorile null.

Operatorul .? putem sa il folosim pe variabile de tipul reference type. Acest operator ne permite sa apelam proprietati sau metode doar daca obiectul este initializat. In cazul care acesta nu este initializat se va returna null si astfel nu vom mai primi exceptia NullPointerException.

            Car car = null;
            car?.IncreaseSpeed(10); //this statement returns null
            car = new Car();
            car?.IncreaseSpeed(10);
            Console.WriteLine(car?.Speed);//10

Operatorul de mai sus merge mana in mana cu operatorul ??. Acest operator functioneaza astfel: daca expresia din stanga este nulla, atunci ne returneaza valoarea din dreapta:

car = null;
Console.WriteLine(car?.Speed ?? 0); //0

Expresia nameof() returneaza numele simbolului. Foarte folositor pentru afisari si loguri

Console.WriteLine(nameof(car.Speed)+"="+car.Speed); //nameof express =>it prints Speed=100

Codul sursa