int ValA = ;
int? ValB = ;int? ValC = ValA * ValB;
//ValC== int ValA = ;
int? ValB = null;int? ValC = ValA * ValB;
//ValC==null int ValA = ;
int? ValB = null;int? ValC = ValA + ValB;
//ValC仍然是null;
进入讨论组讨论
可以看到两个操作数只要有任何一个是null得到的结果也一定是null不管是加减还是乘除当然如果操作数不是null 则结果还是按原来操作符运算得到的结果
在上面的代码中如果ValC不是Nullable类型情况会怎么样呢?如以下代码
int ValA = ;
int? ValB = ;
int ValC = ValA * ValB;
// ValC 不是Nullable类型上面这段代码会抛出一个异常ValA * ValB的结果是null它不能被赋给一个非Nullable变量ValC因为会产生异常 关系运算
两个都是null值的Nullable变量被认为是相等的而一个值为null的变量和其它任何非null值的变量都是不相等的如下面示例代码
int abc = ;
int xyz = ;
int? def = null;
int? uvw = ;
Comparison
Result abc == xyz
// false abc == def
// false def == null
// true
abc == uvw
// true uvw == null
// false uvw != null
// true
[] [] []