Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Выражение значения по умолчанию создает значение по умолчанию типа. Существует два типа выражений значений по умолчанию: вызов оператора по умолчанию и литерал по умолчанию.
Ключевое 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#.