Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Выражение значения по умолчанию создает значение по умолчанию типа. Существует два типа выражений значений по умолчанию: вызов оператора по умолчанию и литерал по умолчанию.
Ключевое default
слово также используется в качестве метки регистра по умолчанию в инструкцииswitch
.
оператор по умолчанию
Оператор default
принимает в качестве аргумента имя типа или параметр типа, как показано в следующем примере:
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.
литерал по умолчанию
Можно использовать default
литерал для создания значения по умолчанию типа, когда компилятор может определить тип выражения. Литеральное default
выражение создает то же значение, что default(T)
и выражение, где T
находится выводимый тип. Вы можете использовать default
литерал в любом из следующих случаев:
- В задании или инициализации переменной.
- В объявлении значения по умолчанию для необязательного параметра метода.
- В вызове метода для предоставления значения аргумента.
- В операторе
return
или в виде выражения в элементе с выражением.
В следующем примере показано использование 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) ]
Подсказка
Используйте правило стиля .NET IDE0034 , чтобы указать предпочтения по использованию default
литерала в базе кода.
Спецификация языка C#
Дополнительные сведения см. в разделе "Выражения значений по умолчанию " спецификации языка C#.