standaardwaardeexpressies - de standaardwaarde produceren

Een standaardwaardeexpressie produceert de standaardwaarde van een type. Er zijn twee soorten standaardwaarde-expressies: de aanroep van de standaardoperator en een letterlijke standaardwaarde.

U gebruikt het default trefwoord ook als het standaardcaselabel binnen een switch instructie.

standaardoperator

Het argument voor de default operator moet de naam van een type of een typeparameter zijn, zoals in het volgende voorbeeld wordt weergegeven:

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.

standaard letterlijke letterlijke standaardwaarde

U kunt de default letterlijke waarde gebruiken om de standaardwaarde van een type te produceren wanneer de compiler het expressietype kan afleiden. De default letterlijke expressie produceert dezelfde waarde als de default(T) expressie waarin T het uitgestelde type is. U kunt de default letterlijke waarden in een van de volgende gevallen gebruiken:

In het volgende voorbeeld ziet u het gebruik van de default letterlijke waarden:

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) ]

Tip

Gebruik de .NET-stijlregel IDE0034 om een voorkeur op te geven voor het gebruik van de default letterlijke waarde in uw codebasis.

C#-taalspecificatie

Zie de sectie Standaardwaardeexpressies van de C#-taalspecificatie voor meer informatie.

Zie ook