Wydawać by się mogło, że zajmiemy się dzisiaj, bardzo trywialną kwestią, jednak wymaga ona zrozumienia szczególnie na początku naszej przygody z dowolnym językiem programowania.
Przede wszystkim należy pamiętać, że wartość null podawana za pomocą słowa kluczowego null oznacza, że zmienna nie wskazuje żadnego prawidłowego obiektu.
Totalnie upraszczając, można pokusić się o stwierdzenie, że zmienna nie wskazuje żadnej wartości.
W typach referencyjnych takich jak przykładowo: klasy czy też jeden z podstawowych typów zmiennych, jakim niewątpliwie jest string, można sprawdzić czy referencja do czegoś prowadzi.
Jeżeli tak nie jest, nasz obiekt czy też zmienna ” posiada wartość null”.
Przejdźmy jednak do głównej kwestii. W poniższym kodzie następuje przypisanie wartości null do pustego łańcucha znaków.
1 2 3 |
string Name = null; // Zerowanie wartości zmiennej Name Console.WriteLine(Name); |
Sednem dzisiejszego tematu jest uświadomienie sobie, że przypisanie wartości null w naszym przypadku do łańcucha znaków, nie jest równoznaczne z brakiem przypisania.
To natomiast oznacza, że zmienna o wartości null jest ustawiona ! Brak przypisania jakiejkolwiek wartości do zmiennej będzie skutkował wystąpieniem błędu kompilacji.
Jest to powszechnie spotykany błąd szczególnie u niedoświadczonych programistów.
Reasumując, przypisanie wartości null do typu string oznacza, że zmienna nie ma wartości i nie jest to równoznaczne z przypisaniem do niej pustego łańcucha znaków “”, ponieważ pusty łańcuch znaków stanowi już wartość.
Następnie zajmiemy się modyfikatorem umożliwiającym stosowanie wartości null. Mianowicie typy bezpośrednie nie mogą przechowywać referencji (nawet jeśli ta nigdzie nie prowadzi ).
Jednak często zdarza się, że owa wartość może wystąpić , szczególnie kiedy walidujemy pewne zmienne, pochodzące chociażby z formularza.
Aby zadeklarować zmienną typu bezpośreniego, w której można zapisać wartość null należy zastosować modyfikator “?”.
Do przedstawienia tego przykładu posłużymy się prostą funkcją, która sprawdza czy wartość wiek została uzupełniona.
1 2 3 4 5 6 7 8 9 10 11 |
public static void SprawdzWiek(int? wiek) { if (wiek == null) { Console.WriteLine("Proszę uzupełnić wiek !"); } else { Console.WriteLine("Wiek został uzupełniony! Jego wartość wynosi {0}", wiek); } } |
Następnie wywołujemy naszą funkcję – należy zwrócić uwagę, że podczas deklaracji zmiennej istotne jest uzględnienie modyfikatora “?”, ponieważ z założenia typy bezpośrednie nie mogą przyjmować wartości null.
1 2 |
int? wiek = null; SprawdzWiek(wiek); |
Ten aspekt jest szczególnie przydatny chociażby podczas pracy z bazami danych gdzie często zdarza się, że wartości w pojedyńczych kolumnach są puste, jendak teraz wiemy jak sobie radzić z tym problemem.
Polecam ciekawe WEBinarium 🙂
https://webinaria.proidea.pl/kurs/the-worst-mistake-in-computer-science/