Freigeben über


Standardwertausdrücke – Erzeugen des Standardwerts

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:

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.

Siehe auch