Valori predefiniti dei tipi C# (riferimenti per C#)

La tabella seguente mostra i valori predefiniti dei tipi C#:

Type Default value
Qualsiasi tipo riferimento null
Qualsiasi tipo numerico integrale incorporato 0 (zero)
Qualsiasi tipo numerico a virgola mobile incorporato 0 (zero)
bool false
char '\0' (U+0000)
enum Valore prodotto dall'espressione (E)0, dove E è l'identificatore di enumerazione.
struct Valore prodotto impostando tutti i campi dei tipi valore sui rispettivi valori predefiniti e tutti i campi dei tipi riferimento su null.
Qualsiasi tipo valore nullable Un'istanza per la quale la proprietà HasValue è false e la proprietà Value non è definita. Tale valore predefinito è noto anche come valore null del tipo di valore che ammette i valori Null.

Espressioni con valore predefinito

Usare l'operatore default per produrre il valore predefinito di un tipo, come illustrato nell'esempio seguente:

int a = default(int);

È possibile usare il valore letteraledefault per inizializzare una variabile con il valore predefinito del tipo:

int a = default;

Costruttore senza parametri di un tipo valore

Per un tipo valore, anche il costruttore senza parametri implicito produce il valore predefinito del tipo, come mostrato nell'esempio seguente:

var n = new System.Numerics.Complex();
Console.WriteLine(n);  // output: (0, 0)

In fase di esecuzione, se l'istanza System.Type rappresenta un tipo di valore, è possibile usare il metodo Activator.CreateInstance(Type) per richiamare il costruttore senza parametri per ottenere il valore predefinito del tipo.

Nota

In C# 10 e versioni successive, un tipo di struttura (che è un tipo valore) può avere un costruttore esplicito senza parametri che può produrre un valore non predefinito del tipo. È quindi consigliabile usare l'operatore default o il valore letterale default per produrre il valore predefinito di un tipo.

Specifiche del linguaggio C#

Per altre informazioni, vedere le sezioni seguenti delle specifiche del linguaggio C#:

Vedi anche