wyrażenia wartości domyślnej — generuje wartość domyślną
Wyrażenie wartości domyślnej generuje wartość domyślną typu. Istnieją dwa rodzaje wyrażeń wartości domyślnych: domyślne wywołanie operatora i literał domyślny.
Słowo kluczowe jest również używane default
jako domyślna etykieta wielkości liter w instrukcjiswitch
.
operator domyślny
Argument default
operatora musi być nazwą typu lub parametru typu, jak pokazano w poniższym przykładzie:
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.
literał domyślny
Możesz użyć default
literału, aby utworzyć wartość domyślną typu, gdy kompilator może wywnioskować typ wyrażenia. Wyrażenie default
literału generuje tę samą wartość co default(T)
wyrażenie, w którym T
jest wywnioskowanym typem. Literału default
można użyć w dowolnym z następujących przypadków:
- W przypisaniu lub inicjowaniu zmiennej.
- W deklaracji wartości domyślnej dla opcjonalnego parametru metody.
- W wywołaniu metody w celu podania wartości argumentu.
- W instrukcji
return
lub jako wyrażenie w składowej wyrażenia.
W poniższym przykładzie pokazano użycie default
literału:
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) ]
Napiwek
Użyj reguły stylu platformy .NET IDE0034 , aby określić preferencję użycia default
literału w bazie kodu.
specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz sekcję Domyślne wyrażenia wartości specyfikacji języka C#.