可空类型和??运算符

废话不多说,直接看代码,应该很容易懂,:)

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中去的.

以前使用的时候,都没做一下整理,刚好最近看书看到,就整理一下笔记:),

posted on 2008-12-27 21:37  Ss_Andy  阅读(377)  评论(6编辑  收藏  举报