Код: Выделить всё
public static int? MyFunction(){
return default;
}
public static T MyFunctionGeneric() {
return default;
}
public static T? MyFunctionGenericNullable(){
return default;
}
public static void main(string[] args){
Console.WriteLine(MyFunction());
Console.WriteLine(MyFunctionGeneric());
Console.WriteLine(MyFunctionGenericNullable());
}
Это это также тот случай, когда я определяю универсальный тип, который возвращает свой собственный тип, поскольку передается int?, возвращаемое значение по умолчанию равно нулю.
Однако, в третьем случае, хотя технически тип возвращаемого значения — int?, возвращаемое значение по умолчанию — 0. Мне пришлось бы передать int? в качестве параметра типа, чтобы получить нулевой ответ. Обратите внимание, что это происходит, даже когда я явно указываю return default(T?)
Это немного неожиданно, есть ли у кого-нибудь объяснение этому?
Подробнее здесь: https://stackoverflow.com/questions/791 ... d-behavior