Uwaga
Dostęp do tej strony wymaga autoryzacji. Może 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
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#.