C#

值类型必须包含一个值,引用类型可为空。有时让值类型为空很有用,比如处理数据库时,泛型使用System.Nullable<T>提供了使值为空的一种方式。

如Sytem.Nullable<int> nullableInt;

可以通过nullableInt == null或者nullableInt.HasValue()来判断是否变量为空。

int? nullableInt;与上面定义等价。


int? op1 = 5;

int result = op1*5; //这句编译会出错

int? result = op1*5; int result = (int)op1*5; int result = op1.Value * 5; 都可以正常工作。


int? op1 = null;

int? op2 = 5;

int? result = op1*op2;

当运算等式中的一个或者两个值是null时,除了bool?之外的所有简单可空类型,结果为null。


??空结合运算符

op1??op2 与 op1==null??op2:op1等价,即如果第一个操作数不为空,该运算符就等于第一个操作数,否则,该运算符就等于第二个操作数。

原文地址:https://www.cnblogs.com/lilideng/p/CSharp_Nullable.html