C# Academy · Lektion

Egenskaberne HasValue og Value

Undersøg og tilgå nullable-værdier sikkert.

Lektion 2 af 413 trin

Egenskaberne HasValue og Value er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 4 lektioner i alt.

To vigtige egenskaber

Alle nullbare værdier har HasValue (en bool) og Value (den underliggende værdi). De er dine værktøjer til at undersøge værdien sikkert.

using System;

class Program {
    static void Main() {
        int? n = 5;
        Console.WriteLine(n.HasValue);
        Console.WriteLine(n.Value);
    }
}

HasValue tjekker, om der er en værdi

HasValue er true, når der er en reel værdi, og false, når værdien er null.

using System;

class Program {
    static void Main() {
        int? a = 10;
        int? b = null;
        Console.WriteLine(a.HasValue);
        Console.WriteLine(b.HasValue);
    }
}

Sikker læsning af Value

Tjek altid HasValue, før du læser Value, for læsning af Value på en nullbar værdi medfører en fejl.

using System;

class Program {
    static void Main() {
        int? n = 42;
        if (n.HasValue) {
            Console.WriteLine(n.Value * 2);
        }
    }
}

Læsning af Value på null medfører en fejl

Hvis du læser Value, når den nullbare værdi er null, udløser C# en InvalidOperationException. Tjekket beskytter dig.

using System;

class Program {
    static void Main() {
        int? n = null;
        try {
            Console.WriteLine(n.Value);
        } catch (InvalidOperationException) {
            Console.WriteLine("Caught: no value");
        }
    }
}

GetValueOrDefault

GetValueOrDefault() returnerer værdien, hvis den findes, og ellers typens standardværdi (0 for int, false for bool).

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault());
    }
}

GetValueOrDefault med reserveværdi

Angiv et argument for at vælge din egen reserveværdi: GetValueOrDefault(99) returnerer 99, når værdien er null.

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault(99));
        int? m = 7;
        Console.WriteLine(m.GetValueOrDefault(99));
    }
}

Mønster: Tjek derefter brug

Et almindeligt mønster kombinerer HasValue og Value i en enkel forgrening.

using System;

class Program {
    static void Describe(int? score) {
        if (score.HasValue)
            Console.WriteLine("Score is " + score.Value);
        else
            Console.WriteLine("No score yet");
    }
    static void Main() {
        Describe(88);
        Describe(null);
    }
}

Implicit konvertering tilbage

Du kan først tildele en nullbar værdi til en almindelig type, når du har bekræftet, at den har en værdi, og derefter læst Value.

using System;

class Program {
    static void Main() {
        int? maybe = 15;
        if (maybe.HasValue) {
            int real = maybe.Value;
            Console.WriteLine(real + 5);
        }
    }
}

Standardværdien for en nullbar type

En nullbar værdi, der ikke er angivet, har som standard værdien null, så HasValue er false.

using System;

class Program {
    static void Main() {
        int? n = default;
        Console.WriteLine(n.HasValue);
    }
}

Brug i aggregeringer

Gå gennem dataene, og spring nullværdier over med HasValue for at beregne sikre totaler.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5, null, 8 };
        int sum = 0;
        foreach (var r in readings)
            if (r.HasValue) sum += r.Value;
        Console.WriteLine(sum);
    }
}

GetValueOrDefault i løkker

GetValueOrDefault kan forenkle kode, hvor null skal behandles som nul.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5 };
        int sum = 0;
        foreach (var r in readings)
            sum += r.GetValueOrDefault();
        Console.WriteLine(sum);
    }
}

Hurtigt tjek

Afprøv din viden om egenskaber for nullbare værdier.

Opsummering

HasValue fortæller dig, om en nullbar værdi indeholder en værdi, og Value henter den, men læsning af Value på null medfører en fejl.

GetValueOrDefault() returnerer sikkert værdien eller en reserveværdi (typens standardværdi eller en værdi, du selv angiver), hvilket gør den ideel til summer og sikre læsninger.

Gratis at komme i gang

Lær C# med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
93
Lektioner
346

Ofte stillede spørgsmål

Er lektionen “Egenskaberne HasValue og Value” gratis?

Ja — hele teksten til “Egenskaberne HasValue og Value” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Egenskaberne HasValue og Value”?

Undersøg og tilgå nullable-værdier sikkert. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C# Academy?

Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Egenskaberne HasValue og Value”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C# Academy-lektion?

Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Introduktion til nullable-værdityper
  2. Egenskaberne HasValue og Value
  3. Null-coalescing-operatorer
  4. Nullable i beregninger
← Tilbage til C# Academy