C#的一些运算符

参见《C#高级编程》第四版

is 运算符

is 运算符可以检查对象是否与特定的类型兼容。兼容表示对象是该类型,或者派生于该类型。例如,要检查变量是否与object类型兼容:

            int i = 10;

            if (i is object)

            {

                Console.WriteLine("i is an object");

      }

int和从object继承而来的其他C#数据类型一样,表达式i is object将得到true,并显示信息。

 

as运算符

as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回值null。如下面的代码所示,如果object引用不指向string实例,把object引用转换为string就会返回null:

            object o1 = "Some String";

            object o2 = 5;

 

            string s1 = o1 as string; // s1 = "Some String"

      string s2 = o2 as string; // s2 = null

 

可空类型和运算符

如果在程序中使用可空类型,就必须考虑null值在与各种运算符一起使用时的影响。通常可空类型与一元或二元运算符一起使用时,如果其中一个操作数或两个操作数都是null,其结果就是null。例如:

            int? a = null;

            int? b = a + 4; // b = null

      int? c = a * 5; // c = null

但是在比较可空类型时,只要有一个操作数是null,比较的结果就是false。例如:

            int? a = null;

            int b = -1;

            if (a < b)

            {

                // something

            }

            else

            {

                // something

      }

 

空接合运算符

空接合运算符(??)为处理可空类型和引用类型时表示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

如果第二个操作数不能隐含地转换为第一个操作数的类型,就生成一个编译错误。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值