0Pricing
C# Academy · Lezione

Introduzione ai tipi di valore nullable

Dichiari int?, double? e comprenda Nullable .

Introduzione ai tipi di valore nullable è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 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.

I tipi valore non possono essere null

Normalmente un int contiene sempre un numero e non può mai essere null. A volte è necessario rappresentare l'assenza di un valore, ad esempio quando manca una misurazione.

using System;

class Program {
    static void Main() {
        int count = 0;
        Console.WriteLine(count);
    }
}

Nullable con ?

Aggiunga ? dopo un tipo valore per renderlo nullable. int? può contenere un qualsiasi int oppure null.

using System;

class Program {
    static void Main() {
        int? maybe = null;
        Console.WriteLine(maybe.HasValue);
        maybe = 42;
        Console.WriteLine(maybe);
    }
}

Altri tipi nullable

Qualsiasi tipo valore può essere nullable: double?, bool?, DateTime? e così via.

using System;

class Program {
    static void Main() {
        double? temp = null;
        bool? flag = true;
        Console.WriteLine(temp.HasValue + " " + flag);
    }
}

Nullable<T> per esteso

int? è semplicemente una forma abbreviata della struct Nullable<int>. Entrambi vengono compilati esattamente nello stesso tipo.

using System;

class Program {
    static void Main() {
        Nullable<int> a = 10;
        int? b = 10;
        Console.WriteLine(a == b);
    }
}

Assegnare null

È possibile assegnare liberamente null a una variabile nullable e assegnarle in seguito un valore reale.

using System;

class Program {
    static void Main() {
        int? id = 100;
        Console.WriteLine(id);
        id = null;
        Console.WriteLine(id.HasValue);
    }
}

Stampare un nullable null

La stampa di un nullable che vale null produce una stringa vuota, non la parola null.

using System;

class Program {
    static void Main() {
        int? value = null;
        Console.WriteLine("[" + value + "]");
    }
}

Conversione implicita a nullable

Un int normale viene convertito automaticamente in int?, perché ogni int è un int nullable valido.

using System;

class Program {
    static void Main() {
        int x = 7;
        int? y = x;
        Console.WriteLine(y);
    }
}

Tipi nullable come valori restituiti dai metodi

Un metodo può restituire un tipo nullable per distinguere tra «valore trovato» e «nessun valore trovato».

using System;

class Program {
    static int? FindEven(int[] nums) {
        foreach (int n in nums)
            if (n % 2 == 0) return n;
        return null;
    }
    static void Main() {
        Console.WriteLine(FindEven(new[] {1, 3, 4}));
    }
}

Confrontare i nullable

L'uguaglianza funziona come previsto: due nullable sono uguali se entrambi sono null oppure se contengono lo stesso valore.

using System;

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

Perché usare i tipi nullable

I tipi valore nullable rappresentano in modo chiaro i dati facoltativi, ad esempio una colonna di database che consente NULL o un campo lasciato vuoto dall'utente.

using System;

class Program {
    static void Main() {
        int? userAge = null;
        string msg = userAge.HasValue ? "Age set" : "Age unknown";
        Console.WriteLine(msg);
    }
}

Nullable è una struct

Nullable<T> è a sua volta un tipo valore, quindi una variabile nullable non è mai un riferimento, anche se può essere null.

using System;

class Program {
    static void Main() {
        int? n = 3;
        Console.WriteLine(n.GetType().Name);
    }
}

Verifica rapida

Verifichi la Sua comprensione dei tipi valore nullable.

Riepilogo

I tipi valore come int non possono essere null per impostazione predefinita. Aggiungendo ? si crea un tipo nullable (int?), che è una forma abbreviata di Nullable<T>.

I tipi nullable consentono di rappresentare dati mancanti o facoltativi, si convertono implicitamente dal tipo sottostante e sono a loro volta struct.

Domande Frequenti

La lezione «Introduzione ai tipi di valore nullable» è gratuita?

Sì — il testo completo di «Introduzione ai tipi di valore nullable» è 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 «Introduzione ai tipi di valore nullable»?

Dichiari int?, double? e comprenda 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 1 di 4.

Quanto tempo richiede la lezione «Introduzione ai tipi di valore nullable»?

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