alapértelmezett értékkifejezések – az alapértelmezett érték előállítása
Az alapértelmezett értékkifejezés egy típus alapértelmezett értékét állítja elő. Kétféle alapértelmezett értékkifejezés létezik: az alapértelmezett operátorhívás és egy alapértelmezett literál.
A kulcsszót default
is használja alapértelmezett kis- és nagybetűként egy switch
utasításon belül.
alapértelmezett operátor
Az operátor argumentumának default
egy típus vagy egy típusparaméter nevének kell lennie, ahogy az alábbi példa mutatja:
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.
alapértelmezett literál
A literál használatával default
létrehozhatja egy típus alapértelmezett értékét, ha a fordító ki tudja következtetni a kifejezés típusát. A default
literális kifejezés ugyanazt az értéket állítja elő, mint az a default(T)
kifejezés, amelyben T
a kikövetkező típus szerepel. A literálist az default
alábbi esetekben használhatja:
- Változó hozzárendelésében vagy inicializálásában.
- Az opcionális metódusparaméter alapértelmezett értékének deklarációjában.
- Argumentumérték megadására irányuló metódushívásban.
return
Egy utasításban vagy kifejezési testű tag kifejezéseként.
Az alábbi példa a literál használatát default
mutatja be:
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) ]
Tipp.
A .NET stílusszabály IDE0034 használatával megadhatja a literál használatát a default
kódbázisban.
C# nyelvspecifikáció
További információ: A C# nyelv specifikációjának Alapértelmezett értékkifejezések szakasza.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: