Delen via


Standaardwaardeexpressies : de standaardwaarde produceren

Een standaardwaardeexpressie produceert de standaardwaarde van een type. Er zijn twee soorten standaardwaarde-expressies: de default operatoroproep en een default letterlijke waarde.

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

default bediener

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.

default Letterlijke

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

Aanbeveling

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