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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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