Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un'espressione di valore predefinita produce il valore predefinito di un tipo. Esistono due tipi di espressioni di valore predefinite: la chiamata dell'operatoredefault e un default valore letterale.
È anche possibile usare la default parola chiave come etichetta case predefinita all'interno di un'istruzioneswitch .
Il riferimento al linguaggio C# documenta la versione rilasciata più di recente del linguaggio C#. Contiene anche la documentazione iniziale per le funzionalità nelle versioni di anteprima pubblica per la prossima versione del linguaggio di programmazione.
La documentazione identifica tutte le funzionalità introdotte nelle ultime tre versioni della lingua o nelle anteprime pubbliche correnti.
Suggerimento
Per trovare quando una funzionalità è stata introdotta per la prima volta in C#, vedere l'articolo sulla cronologia delle versioni del linguaggio C#.
default operatore
L'argomento dell'operatore default deve essere il nome o il parametro di un tipo, come illustrato nell'esempio seguente:
Console.WriteLine(default(int)); // output: 0
Console.WriteLine(default(object) is null); // output: True
void DisplayDefaultOf<T>()
{
var val = default(T);
Console.WriteLine($"Default value of {typeof(T)} is {(val == null ? "null" : val.ToString())}.");
}
DisplayDefaultOf<int?>();
DisplayDefaultOf<System.Numerics.Complex>();
DisplayDefaultOf<System.Collections.Generic.List<int>>();
// Output:
// Default value of System.Nullable`1[System.Int32] is null.
// Default value of System.Numerics.Complex is (0, 0).
// Default value of System.Collections.Generic.List`1[System.Int32] is null.
default Letterale
È possibile usare il default valore letterale per produrre il valore predefinito di un tipo quando il compilatore può dedurre il tipo di espressione. L'espressione default letterale produce lo stesso valore dell'espressione default(T) dove T è il tipo dedotto. È possibile usare il default valore letterale in uno dei casi seguenti:
- Nell'assegnazione o inizializzazione di una variabile.
- Nella dichiarazione del valore predefinito per un parametro di metodo facoltativo.
- In una chiamata al metodo per fornire un valore di argomento.
- In un'istruzione
returno come espressione in un membro con corpo di espressione.
L'esempio seguente illustra l'utilizzo del default valore letterale:
T[] InitializeArray<T>(int length, T initialValue = default)
{
if (length < 0)
{
throw new ArgumentOutOfRangeException(nameof(length), "Array length must be nonnegative.");
}
var array = new T[length];
for (var i = 0; i < length; i++)
{
array[i] = initialValue;
}
return array;
}
void Display<T>(T[] values) => Console.WriteLine($"[ {string.Join(", ", values)} ]");
Display(InitializeArray<int>(3)); // output: [ 0, 0, 0 ]
Display(InitializeArray<bool>(4, default)); // output: [ False, False, False, False ]
System.Numerics.Complex fillValue = default;
Display(InitializeArray(3, fillValue)); // output: [ (0, 0), (0, 0), (0, 0) ]
Suggerimento
Usare la regola di stile .NET IDE0034 per specificare una preferenza per l'uso default del valore letterale nella codebase.
Specificazione del linguaggio C#
Per altre informazioni, vedere la sezione Espressioni valore predefinite della specifica del linguaggio C#.