Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett standardvärdeuttryck genererar standardvärdet för en typ. Det finns två typer av standardvärdeuttryck: standardoperatoranropet och en standardliteral.
Du använder också nyckelordet default
som standardfalletikett i en switch
-instruktion.
standardoperator
Argumentet till operatorn default
måste vara namnet på en typ eller en typparameter, som följande exempel visar:
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
Du kan använda literalen default
för att skapa standardvärdet för en typ när kompilatorn kan härleda uttryckstypen. Literaluttrycket default
genererar samma värde som uttrycket default(T)
där T
är den härledda typen. Du kan använda literalen default
i något av följande fall:
- I tilldelningen eller initieringen av en variabel.
- I deklarationen av standardvärdet för en valfri metodparameter.
- I ett metodanrop för att ange ett argumentvärde.
- I en
return
instruktion eller som ett uttryck i en uttrycksfyllig medlem.
I följande exempel visas användningen av literalen default
:
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) ]
Dricks
Använd .NET-formatregeln IDE0034 för att ange en inställning för användningen av literalen default
i din kodbas.
Språkspecifikation för C#
Mer information finns i avsnittet Standardvärdeuttryck i C#-språkspecifikationen.