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 für einen Typ. Es gibt zwei Arten von Standardwertausdrücken: den Aufruf des default-Operators und ein default-Literal.
Außerdem verwenden Sie das Schlüsselwort default
in einer switch
-Anweisung als case-Standardbezeichnung.
default-Operator
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.
default-Literal
Sie können das default
-Literal zum Erzeugen des Standardwerts eines Typs verwenden, wenn der Compiler den Ausdruckstyp ableiten kann. Der default
-Literalausdruck erzeugt den gleichen Wert wie der default(T)
-Ausdruck, wobei T
der abgeleitete Typ ist. Sie können das default
-Literal in den folgenden Fälle verwenden:
- Bei der Zuweisung oder Initialisierung einer Variablen.
- Bei der Deklaration des Standardwerts eines optionalen Methodenparameters
- Bei einem Methodenaufruf zum Bereitstellen eines Argumentwerts.
- In einer
return
-Anweisung oder als Ausdruck in einem Ausdruckskörpermember
Im folgenden Beispiel wird die Verwendung des default
-Literals veranschaulicht:
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 die .NET-Formatregel IDE0034, um eine Einstellung für die Verwendung des default
-Literals in Ihrer Codebasis anzugeben.
C#-Sprachspezifikation
Weitere Informationen finden Sie im Abschnitt Ausdrücke mit Standardwert der C#-Sprachspezifikation.