C#2.0 is运算符

is”运算符所做的操作,不仅仅检查数据能否从一个类型转换成另一个类型。一个类型内部可能实现类向某一类型的强制转换,然而“is”运算符不仅仅检查类型成功,还会检查底层对象本身是否真的是一个要转换的类型或者兼容类型。

下面通过一个小例子来说明下问题。

 

object o = new object ();

Console. WriteLine (o is string );

o = "o contains string value ";

Console. WriteLine ( o is string );

o = 123;

Console. WriteLine ( o is string );

 

输出的结果是:

false

true

false

为什么是这样的结果呢?

 

先说第一个输出,“o”初始化为一对象。Object实现了向string转换的方法ToString(),应该说是可以向string转换成功的。但是我们说“is”不仅仅检查是否能转换成功,还检查对象本省是否是目标类型或兼容类型。由于所有类型都是从object类派生出来的,所以所有类型是“属于”object类型的,而object不一定属于派生类型,需要强制转换。所以返回的结果是“false”。

第二个输出由于给“o”赋值是一个字符串,所以“o”存储的是string类型的值。所以返回“true”。

同样第三个输出也是由于“123”是数值类型的,不是string类型的,所以返回“false”。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值