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 de toewijzing of initialisatie van een variabele.
- In de declaratie van de standaardwaarde voor een optionele methodeparameter.
- In een methodeaanroep om een argumentwaarde op te geven.
- In een
return
instructie of als een expressie in een expressie-lichaamslid.
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.