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
- Introduzione ai tipi di valore nullable
- Proprietà HasValue e Value
- Operatori null-coalescing
- Nullable nei calcoli