0Pricing
C# Academy · Lezione

Operatori null-coalescing

Utilizzi ?? e ??= per fornire valori alternativi.

Operatori null-coalescing è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 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.

L'operatore ??

L'operatore di fusione null ?? restituisce l'operando sinistro se non è null; in caso contrario, restituisce quello destro. È un modo compatto per fornire un valore alternativo.

using System;

class Program {
    static void Main() {
        int? maybe = null;
        int value = maybe ?? -1;
        Console.WriteLine(value);
    }
}

?? sceglie il primo valore non null

Se il lato sinistro contiene un valore, prevale quel valore e il lato destro viene ignorato.

using System;

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

?? con i tipi riferimento

?? funziona anche con i tipi riferimento come string, fornendo un testo predefinito quando il valore è null.

using System;

class Program {
    static void Main() {
        string name = null;
        Console.WriteLine(name ?? "Guest");
    }
}

Concatenare ??

È possibile concatenare diversi valori alternativi; viene utilizzato il primo valore non null.

using System;

class Program {
    static void Main() {
        string a = null, c = "third";
        string b = null;
        Console.WriteLine(a ?? b ?? c ?? "last");
    }
}

?? restituisce il tipo sottostante

Quando il valore a sinistra è int? e quello a destra è int, il risultato è un int non nullable, poiché null non può più verificarsi.

using System;

class Program {
    static void Main() {
        int? maybe = null;
        int sure = maybe ?? 0;
        Console.WriteLine(sure + 5);
    }
}

L'operatore ??=

L'assegnazione con coalescenza dei valori null ??= assegna il valore a destra solo se quello a sinistra è attualmente null.

using System;

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

??= lascia invariati i valori esistenti

Se la variabile contiene già un valore, ??= non fa nulla.

using System;

class Program {
    static void Main() {
        string config = "custom";
        config ??= "default";
        Console.WriteLine(config);
    }
}

Inizializzazione differita con ??=

??= è perfetto per impostare un valore la prima volta e conservarlo in seguito.

using System;

class Program {
    static string cache = null;
    static string GetData() {
        cache ??= "loaded";
        return cache;
    }
    static void Main() {
        Console.WriteLine(GetData());
        Console.WriteLine(GetData());
    }
}

?? e GetValueOrDefault a confronto

Entrambi forniscono valori alternativi, ma ?? è più flessibile: funziona con i tipi riferimento e consente di utilizzare qualsiasi espressione come alternativa.

using System;

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

?? negli argomenti dei metodi

Utilizzi ?? direttamente per fornire un valore predefinito proprio nel punto in cui serve un valore.

using System;

class Program {
    static void Greet(string name) {
        Console.WriteLine("Hello, " + name);
    }
    static void Main() {
        string input = null;
        Greet(input ?? "friend");
    }
}

Comportamento short-circuit

Il lato destro di ?? viene valutato solo quando quello sinistro è null, in modo simile alla valutazione short-circuit.

using System;

class Program {
    static int Compute() {
        Console.WriteLine("Computed");
        return 42;
    }
    static void Main() {
        int? known = 1;
        int result = known ?? Compute();
        Console.WriteLine(result);
    }
}

Verifica rapida

Verifichi la propria comprensione degli operatori con coalescenza dei valori null.

Riepilogo

L'operatore ?? restituisce il valore a sinistra se non è null; in caso contrario restituisce quello a destra e può essere concatenato. Il tipo del risultato perde la nullability quando viene fornita un'alternativa non null.

??= assegna un valore solo quando la destinazione è null, quindi è ideale per i valori predefiniti e l'inizializzazione differita. Entrambi valutano il lato destro solo quando necessario.

Domande Frequenti

La lezione «Operatori null-coalescing» è gratuita?

Sì — il testo completo di «Operatori null-coalescing» è 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 «Operatori null-coalescing»?

Utilizzi ?? e ??= per fornire valori alternativi. 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 3 di 4.

Quanto tempo richiede la lezione «Operatori null-coalescing»?

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