C# Tips – nullowalne typy proste
Czasami zachodzi konieczność aby móc do zmiennej typu prostego przypisać poza konkretną wartością także wartość null. Zdarza się tak chociażby podczas tworzenia encji bazy danych w podejściu Code-First kiedy jakaś kolumna z liczbami powinna móc też zostać pusta przy dodawaniu nowego rekordu.
Aby można było to zrobić trzeba opakować nasz tym w strukturę Nullable<T>, która udostępni pola HasValue i Value. Przykład:
Nullable<int> var1; var1 = 1; int var2 = var1.Value; var1 = null;
Jednak programiści to oszczędne i leniwe istoty, a klawiatury też mają skończoną wytrzymałość dlatego powstało takie wyrażenie jak ? (pojedynczy znak zapytania), które pozwala skrócić deklarację zmiennej mogącej przyjmować wartość null do takiej postaci:
int? var1; var1 = 1; int var2 = var1.Value; var1 = null;
Zmiana niewielka ale upraszczająca wizualnie kod, zwłaszcza kiedy deklarujemy kilka tego typu pól/właściwości w klasie.
Na koniec jeszcze przykład użycia z wykorzystaniem możliwości sprawdzenia czy zmienna na wartość null w dwóch wersjach:
int? i = null;
if(i.HasValue)
{
return i.Value;
}
//...
int? i = null;
if(i != null)
{
return i.Value;
}
//...
Pierwszy sposób jest bardziej opisowy i wykorzystuje elementy struktury Nullable<T>, drugi zaś jest identyczny jak przy typach normalnie obsługiwanych przez referencję. Oba działają tak samo.



Leave a Comment