Nullable是值类型对吧,为何还能里面存一个空的东东
Nullable是值类型对吧,为什么还能里面存一个空的东东?
难道是.net本身对这个类型有特殊的处理?
------解决思路----------------------
嗯,sorry,我上面说法是错误的。上面只是强制类型转换,不是赋值。
之类型不可更改,只能重建。因此赋值语句
当你为其(引用变量)赋值为一个 int 时,它使用第一种。当你为其赋值为 null时,使用第二种。这是编译器干的事儿,只有从编译之后的结果上才能看明白。
------解决思路----------------------
这应该算是“c#编译器对这个类型有特殊的处理”,而不是.net的处理。(vb.net的编译器也是一样)
编译根据等号右边是不是null,分别生成为两类不同的代码。
难道是.net本身对这个类型有特殊的处理?
------解决思路----------------------
嗯,sorry,我上面说法是错误的。上面只是强制类型转换,不是赋值。
之类型不可更改,只能重建。因此赋值语句
分别会是 x = new Nullable<int>(100);
x = null;
当你为其(引用变量)赋值为一个 int 时,它使用第一种。当你为其赋值为 null时,使用第二种。这是编译器干的事儿,只有从编译之后的结果上才能看明白。
------解决思路----------------------
这应该算是“c#编译器对这个类型有特殊的处理”,而不是.net的处理。(vb.net的编译器也是一样)
编译根据等号右边是不是null,分别生成为两类不同的代码。