c# 空接合(??)运算符的运用

    之前不了解空接合运算符时,要判断一个对象是否为null,如果为null那么给赋于一个默认的值,做法相当的麻烦.例如:
    int? isobject = null;
    if(isobject==null)
    {
        isobject=0;
    }
    每次都要进行判断!!
    当然以上举的只不过是一个简单的例子,有人会想,int型的本来就不会为null,因为其本身有一个默认的值为0.我在这里要说明一下的是,这里举的只是一个例子而己!而且int?代表了变量isobject是可为空的!所以当我赋与一个null时,isobject并不是为0,而是为null.
    每次的判断都要用一个if语句,相当的麻烦,现在用了空接合,代码如下:
    isobject = isobject??0;
    空接合运算符(??)为处理可空类型和引用类型时表示NULL值的可能性提供了一个快捷方式,这个运算符放在两个操作数之间,第一个操作数必须是一个可空类型或引用类,第二个操作数必须与第一个操作数的类型相同,或者可以隐含地转换为第一个操作数的类型.
    空接合运算符的计算如下:
    如果第一个操作数不为NULL,则整个表达式就等于每一个操作数,但如果第一个操作数为NULL,则整个表达式就是等于第二个操作数的值.例如:
    int? a= null;
    int b;
    b= a??10;    //b has the value 10
    a=3;
    b= a??10;    //b has the value 3
   如果第二个操作数不能隐含地转换为第一个操作数的类型,就生成一个编译错误.

posted on 2008-04-06 14:53  Junda.chen  阅读(1547)  评论(1编辑  收藏  举报

导航