0Pricing
C# Academy · Lezione

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

  1. Introduzione ai tipi di valore nullable
  2. Proprietà HasValue e Value
  3. Operatori null-coalescing
  4. Nullable nei calcoli
← Torna a C# Academy