Valori predefiniti dei tipi C# (riferimento C#)
La tabella seguente mostra i valori predefiniti dei tipi C#:
Digitare | Valore predefinito |
---|---|
Qualsiasi tipo di riferimento | null |
Qualsiasi tipo numerico integrale predefinito | 0 (zero) |
Qualsiasi tipo numerico a virgola mobile predefinito | 0 (zero) |
bool | false |
char |
'\0' (U+0000) |
enumerazione | Valore generato dall'espressione (E)0 , dove E è l'identificatore di enumerazione. |
struct | Valore generato impostando tutti i campi di tipo valore sui valori predefiniti e tutti i campi di tipo riferimento su null . |
Qualsiasi tipo di valore annullabile | Istanza per la quale la proprietà HasValue è false e la proprietà Value non è definita. Tale valore predefinito è noto anche come valore null di un tipo di valore nullable. |
Espressioni di valore predefinite
Usare l'operatore default
per produrre il valore predefinito di un tipo, come illustrato nell'esempio seguente:
int a = default(int);
È possibile utilizzare il letterale default
per inizializzare una variabile con il valore predefinito del suo tipo.
int a = default;
Costruttore senza parametri di un tipo di valore
Per un tipo valore, il costruttore implicito senza parametri produce anche il valore predefinito del tipo, come illustrato nell'esempio seguente.
var n = new System.Numerics.Complex();
Console.WriteLine(n); // output: (0, 0)
In fase di esecuzione, se l'istanza di System.Type rappresenta un tipo valore, è possibile usare il metodo Activator.CreateInstance(Type) per richiamare il costruttore senza parametri per ottenere il valore predefinito del tipo.
Nota
Un tipo di struttura (che è un tipo di 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.
Specifica del linguaggio C#
Per altre informazioni, vedere le sezioni seguenti della specifica del linguaggio C# :
- valori predefiniti
- costruttori predefiniti
- costruttori di struct senza parametri
- C# 11 - Struct predefiniti automatici