c# – 可空类型“int?”(包括问号)的默认值是多少?

在C#中,int类型的类实例变量的默认值是什么?

例如,在下面的代码中,MyNullableInt将有什么值,如果它从未被显式分配?

class MyClass
{
    public int? MyNullableInt;
}

(似乎答案几乎肯定是null或0,但是那些是它?)

int的默认值? – 对于使用“type?”的任何可空类型声明 – 为null。

为什么会这样:

> int?是类型Nullable<T>(其中T是int),结构的语法糖。 (reference)
> Nullable< T>类型具有bool HasValue成员,当假时,使Nullable< T>实例“行为像”一个空值。特别地,当可空T< T>时,Nullable<T>.Equals method被重写以返回真。将HasValue == false与实际的null值进行比较。
>从C# Language Specification 11.3.4开始,结构实例的初始默认值是所有结构的值类型字段设置为其默认值,并且所有结构的引用类型字段都设置为null。
> C#中的bool变量的默认值为false(reference)。因此,默认Nullable< T>的HasValue属性实例是false;这又使得Nullable< T>实例本身行为像null。

http://stackoverflow.com/questions/29153832/what-is-the-default-value-of-the-nullable-type-int-including-question-mark

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 可空类型“int?”(包括问号)的默认值是多少?