NULL

När vi använder variabler (t.ex. string, class, object) kan de antingen peka på ett objekt i minnet eller vara null, vilket betyder att de inte pekar på något alls. Detta kan leda till problem om vi försöker använda en variabel som är null, eftersom det kan orsaka undantag (exceptions) i programmet.

Vad är null?

null är ett speciellt värde som indikerar att en variabel inte refererar till något objekt i minnet. Det är som en tom platshållare.


string name = null; // name pekar inte på något objekt
if (name == null)
{
    Console.WriteLine("Namnet är inte satt.");
}

Detta sker ofta när vi använder APIer eller databaser som kan returnera null om ingen data finns.

Problem med null

Om vi försöker använda en variabel som är null, till exempel genom att anropa en metod på den, kommer vi att få ett NullReferenceException, vilket kraschar programmet.

Tänk såhär:

Du ska köra från Göteborg till Stockholm. Du har en bil (din variabel) som du tänker använda för att färdas i, under natten blev bilen stulen (din variabel är null). Det finns ingen dörr att öppna, ingen ratt att vrida på, ingen motor att starta. Du kan inte köra någonstans. Om du försöker sätta dig i bilen och köra, kommer du att ramla och skada dig (programmet kraschar).


Car myCar = null; // Bilen är stulen
myCar.Drive(); // Detta kommer att kasta ett NullReferenceException

Undvik null problem

  1. Kontrollera alltid för null innan du använder en variabel.

if (myCar != null)
{
    myCar.Drive();
}
else
{
    Console.WriteLine("Bilen är puts väck.");
}

  1. Använd ? operatorn (null-conditional operator) för att undvika undantag.

myCar?.Drive(); // Om myCar är null, händer inget

  1. Använd standardvärden för att undvika null.

Så om bilen är stulen kommer försäkringsbolaget att ge dig en hyrbil (ett standardvärde) så att du kan fortsätta din resa.


Car myCar = null;
if (myCar == null)
{
    myCar = new RentalCar(); // Få en hyrbil
}
myCar.Drive("Stockholm");

  1. Använd nullable typer för värdetyper som kan vara null.

int? age = null; // age kan vara null
if (age.HasValue)
{
    Console.WriteLine($"Ålder: {age.Value}");
}
else
{
    Console.WriteLine("Ålder är inte satt.");
}


Upp

Upp


Licens: Apache 2.0 | © 2023 Marcus Medina, Campus Mölndal. Alla rättigheter förbehållna.
Du får använda och modifiera detta verk enligt villkoren i Apache License, Version 2.0. Du får inte använda detta verk för kommersiella ändamål utan tillstånd från upphovsmannen.