我想知道为什么会出现这种情况,因为它与我的预期相反。这与 C# 中如何解释通用可空类型有关。
public static int? MyFunction(){
return default;
}
public static T MyFunctionGeneric<T>() {
return default;
}
public static T? MyFunctionGenericNullable<T>(){
return default;
}
public static void main(string[] args){
Console.WriteLine(MyFunction());
Console.WriteLine(MyFunctionGeneric<int?>());
Console.WriteLine(MyFunctionGenericNullable<int>());
}
正如预期的那样,当我将返回类型定义为int?
默认返回值时null
。
当我定义一个返回自身类型的泛型时也是这样的,因为int?
传入了,所以默认返回值是null
。
然而,在第三种情况下,即使返回类型从技术上讲是int?
,默认返回值也是0
。我必须传入int?
作为我的类型参数才能获得null
响应。请注意,即使我明确声明return default(T?)
这有点出乎意料,有人可以解释一下吗?