可空类型和??运算符
废话不多说,直接看代码,应该很容易懂,:)
int number = null; //报错
int? number = null; //编译正常,?代表可空类型,对所有值类型都可以使用
int? op = 5;
int result = op * 2; //报错,因为op可能是null,不能用null * 值类型
应改为:
int? op = 5;
int result = (int)op * 2;
或者
int result = op.value * 2; //(value属性是返回对象的值,我习惯性使用后者)
??运算符
int? op = null;
int result = op * 2 ?? 5; //如果op*2返回null的话,那result就等于5,否则result就等于op*2
解释:
op是null,所以op * 2 也是null,但??运算符检测到这个情况,并把5赋值给了result
在这里要特别注意的是,在结果中放入int类型的变量result不需要显式转换.??运算符会自动处理这个转换.可以把??等式的结果放到int中去的.
以前使用的时候,都没做一下整理,刚好最近看书看到,就整理一下笔记:),