标签:os sp strong on bs amp ef as line
Microsoft在CLR中引入了可空值类型(nullable value type)的概念。
FCL中定义System.Nullable<T>类如下:
[Serializable,StructLayout(LayoutKind.Sequential)]
public struct Nullable<T> where T: struct {
private Boolean hasValue=false;
internal T value=default(T);
………………(略)
}
一、 C#对可空值类型的支持
Int32? a=5;
Int32? b=null;
//一元操作符
a++;//6;
b=-b; //null;
//二元操作符
a=a+3;//a=9;
b=b*3;//b=null;
二、C#的空结合操作符
String s= DoThing1() ?? DoThing2() ?? ”NoThing!”;
三、可空值的装箱、拆箱与调用GetType
a) 若是,CLR不实际装箱,并返回null值;
b) 若不为null,CLR从可空类型中取出值,并对其进行装箱。
若已装箱的值类型的引用是null,且要拆箱为一个Nullable<T>,那么CLR会将Nullable<T>的值设为null。
Console.WriteLine(x.GetType());//输出System.Int32,而非System.Nullable<Int32>。
标签:os sp strong on bs amp ef as line
原文地址:http://www.cnblogs.com/shouwu/p/4106480.html