Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Standardwertausdruck erzeugt den Standardwert eines Typs. Es gibt zwei Arten von Standardwertausdrücken: den Standardoperatoraufruf und ein Standardliteral.
Sie verwenden das default Schlüsselwort auch als Standardfallbezeichnung in einer switch Anweisung.
Standardoperator
Das Argument für den default-Operator muss der Name eines Typs oder Typparameters sein, wie das folgende Beispiel zeigt:
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.
Standardliteral
Sie können das default Literal verwenden, um den Standardwert eines Typs zu erzeugen, wenn der Compiler den Ausdruckstyp ableiten kann. Der default Literalausdruck erzeugt denselben Wert wie der default(T) Ausdruck, bei dem T es sich um den abgeleiteten Typ handelt. Sie können das default Literal in einem der folgenden Fälle verwenden:
- In der Zuordnung oder Initialisierung einer Variablen.
- In der Deklaration des Standardwerts für einen optionalen Methodenparameter.
- Geben Sie in einem Methodenaufruf einen Argumentwert an.
- In einer
returnAnweisung oder als Ausdruck in einem Ausdruckskörperelement.
Das folgende Beispiel zeigt die Verwendung des default Literals:
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) ]
Tipp
Verwenden Sie .NET-Formatvorlagenregel IDE0034 , um eine Einstellung für die Verwendung des default Literals in Ihrer Codebasis anzugeben.
C#-Sprachspezifikation
Weitere Informationen finden Sie im Abschnitt "Standardwerte" der C#-Sprachspezifikation.