Defensywne programowanie wymaga, by zabezpieczać się przed różnymi niepożądanymi sytuacjami. Jedną z częstszych jest próba odwołania się do obiektu czy wartości, która nie istnieje – czyli np. dereferencja wskaźnika pustego czy użycie odwołania zawierającego null
. Stąd bardzo częste if
y w rodzaju:
Kiedy jednak sprawdzenie null
owatości jest tylko częścią warunku, wtedy w ruch idzie zwykle “sztuczka” z leniwą ewaluacją (lazy evaluation):
Większość języków ją dopuszcza, jako że jest ona przy okazji pewną formą optymalizacji. Jeśli bowiem pierwszy argument operatora logicznego daje informację o prawdziwości/fałszywości całego wyrażenia, nie trzeba już wyliczać drugiego.
Inną typową sytuacją jest zamiana null
a na jakąś inną wartość domyślną:
Tutaj C# oferuje specjalny operator ??
, pomyślany właśnie na tego typu okazje:
Działa on dobrze z typami Nullable
, czyli specyficznym rodzajem typów pochodnych, które dopuszczają wartość null
tam, gdzie typ macierzysty jej nie przewiduje:
Operator ??
przydaje się wtedy do konwersji na typ bazowy z określoną wartością domyślną.
Adding comments is disabled.
Comments are disabled.