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 sind zwei Arten von Standardwertausdrücken vorhanden: der default Operatoraufruf und ein default Literal.
Sie verwenden das default Schlüsselwort auch als Standardfallbezeichnung in einer switch Anweisung.
Die C#-Sprachreferenz dokumentiert die zuletzt veröffentlichte Version der C#-Sprache. Außerdem enthält sie eine erste Dokumentation zu Funktionen in der öffentlichen Vorschau für die kommende Sprachversion.
In der Dokumentation werden alle Features identifiziert, die in den letzten drei Versionen der Sprache oder in der aktuellen öffentlichen Vorschau eingeführt wurden.
Tipp
Informationen dazu, wann ein Feature erstmals in C# eingeführt wurde, finden Sie im Artikel zum Versionsverlauf der C#-Sprache.
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 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.