C#2.0 is运算符

本文详细解析了C#中的is运算符的工作原理。is运算符不仅检查数据类型之间的转换可能性,还深入检查对象本身的类型,确保其与目标类型完全匹配。通过几个示例演示了不同类型赋值情况下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”。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值