C#: универсальные типы, допускающие значение NULL, неожиданное поведение ⇐ C#

Место общения программистов C#
Anonymous
C#: универсальные типы, допускающие значение NULL, неожиданное поведение

Сообщение Anonymous »

Мне было интересно, почему это так, ведь это противоречило моим ожиданиям. Это связано с интерпретацией типов Generic Nullable в C#.

Код: Выделить всё

  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?, возвращаемое значение по умолчанию равно нулю.
Однако, в третьем случае, хотя технически тип возвращаемого значения — int?, возвращаемое значение по умолчанию — 0. Мне пришлось бы передать int? в качестве параметра типа, чтобы получить нулевой ответ. Обратите внимание, что это происходит, даже когда я явно указываю return default(T?)
Это немного неожиданно, есть ли у кого-нибудь объяснение этому?

Подробнее здесь: https://stackoverflow.com/questions/791 ... d-behavior

Вернуться в «C#»