Proprietà HasValue e Value
Esamini e acceda in sicurezza ai valori nullable.
Proprietà HasValue e Value è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Due proprietà fondamentali
Ogni nullable espone HasValue (un bool) e Value (il valore sottostante). Questi sono gli strumenti per esaminarlo in sicurezza.
using System;
class Program {
static void Main() {
int? n = 5;
Console.WriteLine(n.HasValue);
Console.WriteLine(n.Value);
}
}HasValue verifica la presenza
HasValue è true quando è presente un valore reale ed è false quando il valore è null.
using System;
class Program {
static void Main() {
int? a = 10;
int? b = null;
Console.WriteLine(a.HasValue);
Console.WriteLine(b.HasValue);
}
}Leggere Value in sicurezza
Verifichi sempre HasValue prima di leggere Value, perché leggere Value quando il valore è null genera un'eccezione.
using System;
class Program {
static void Main() {
int? n = 42;
if (n.HasValue) {
Console.WriteLine(n.Value * 2);
}
}
}Accedere a Value quando è null genera un'eccezione
Se legge Value quando il nullable è null, C# genera un'InvalidOperationException. Il controllo La protegge.
using System;
class Program {
static void Main() {
int? n = null;
try {
Console.WriteLine(n.Value);
} catch (InvalidOperationException) {
Console.WriteLine("Caught: no value");
}
}
}GetValueOrDefault
GetValueOrDefault() restituisce il valore se presente; in caso contrario, restituisce il valore predefinito del tipo (0 per int, false per bool).
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n.GetValueOrDefault());
}
}GetValueOrDefault con valore alternativo
Passi un argomento per scegliere il Suo valore alternativo: GetValueOrDefault(99) restituisce 99 quando il valore è null.
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n.GetValueOrDefault(99));
int? m = 7;
Console.WriteLine(m.GetValueOrDefault(99));
}
}Schema: controllare e poi usare
Uno schema comune combina HasValue e Value in un ramo condizionale chiaro.
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);
}
}Conversione implicita inversa
È possibile assegnare un nullable a un tipo normale solo dopo aver verificato che contenga un valore, quindi leggendo Value.
using System;
class Program {
static void Main() {
int? maybe = 15;
if (maybe.HasValue) {
int real = maybe.Value;
Console.WriteLine(real + 5);
}
}
}Valore predefinito di un nullable
Un nullable non impostato esplicitamente ha come valore predefinito null, quindi HasValue è false.
using System;
class Program {
static void Main() {
int? n = default;
Console.WriteLine(n.HasValue);
}
}Utilizzare i nullable nelle aggregazioni
Scorra i dati, ignorando i valori null con HasValue, per calcolare totali sicuri.
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 nei cicli
GetValueOrDefault può semplificare il codice quando null deve essere trattato come zero.
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);
}
}Verifica rapida
Verifichi la Sua conoscenza delle proprietà dei nullable.
Riepilogo
HasValue indica se un nullable contiene un valore e Value lo recupera, ma leggere Value quando il valore è null genera un'eccezione.
GetValueOrDefault() restituisce in sicurezza il valore o un valore alternativo (il valore predefinito del tipo o uno fornito da Lei), rendendolo ideale per le somme e per le letture sicure.
Domande Frequenti
La lezione «Proprietà HasValue e Value» è gratuita?
Sì — il testo completo di «Proprietà HasValue e Value» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Proprietà HasValue e Value»?
Esamini e acceda in sicurezza ai valori nullable. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Proprietà HasValue e Value»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Introduzione ai tipi di valore nullable
- Proprietà HasValue e Value
- Operatori null-coalescing
- Nullable nei calcoli