Значение default(T) в C#
Выражение default(T) подставляет пустое значение параметра
типа. Для int это 0, для bool - false,
для строки и другого класса - null. У структуры пустыми
становятся все поля. Ноль или null вместо
default(T) не написать: при объявлении метода конкретный
тип ещё неизвестен, и такое значение подошло бы не каждому
T.
Если тип и так виден из возвращаемого значения, пишут короткое
слово default. Ограничение where T : struct
оставляет в T только структуры, поэтому параметр можно
записать как T?. В вызов передают null.
Значения нет, поэтому подставляется default.
Для int это 0:
static T OrDefault<T>(T? value) where T : struct
{
return value ?? default;
}
Console.WriteLine(OrDefault<int>(null)); // выведет 0
Выведите значения по умолчанию для целого и логического параметров типа.