Egenskaberne HasValue og Value
Undersøg og tilgå nullable-værdier sikkert.
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.
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
- Introduktion til nullable-værdityper
- Egenskaberne HasValue og Value
- Null-coalescing-operatorer
- Nullable i beregninger