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#:
- Valori predefiniti
- Costruttori predefiniti
- C# 10 - Costruttori di struct senza parametri
- C# 11 - Struct predefiniti automatici