Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
returnlub 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) ]
Wskazówka
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ścispecyfikacji języka C#.