book-openC# vs C++ - tipuri nulabile

În C++, un int are întotdeauna o valoare. Dacă doriți să reprezentați lipsa unei valori,trebuie să folosiți convenții (de exemplu, −1 ca valoare sentinel) sau std::optional (din C++17). C# oferă suport nativ pentru tipuri nullable prin sufixul ?. Un int? poate stoca fie un întreg, fie valoarea specială null.

int? notaExamen = null; // studentul nu a dat inca examenul

if (notaExamen.HasValue)
    Console.WriteLine($"Nota: {notaExamen.Value}");
else
    Console.WriteLine("Examenul nu a fost sustinut.");

// Operatorul ?? (null-coalescing) - ofera o valoare implicita
int notaFinala = notaExamen ?? 0; // daca e null , foloseste 0
Console.WriteLine($"Nota finala: {notaFinala}");

// Operatorul ?. (null-conditional) - acces sigur la membri
string text = null;
int? lungime = text?.Length; // nu arunca exceptie, returneaza null
Console.WriteLine(lungime ?? -1); // afiseaza -1

Last updated