Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
returninstructie 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) ]
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.