C#中is、as的区别有哪些

28 篇文章 1 订阅

一、C#中的is

检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,如果一个对象是某个类型或是其父类型的话就返回为true,否则的话就会返回为false。永远不会抛出异常

如果对象引用为null,那么is操作符总是返回为false,因为没有对象可以检查其类型。

 

 

二、C#中as的转换规则

1、检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null


2、不会抛出异常;


3、如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;

4、用as来进行类型转换的时候,所要转换的对象类型必须是目标类型或者转换目标类型的派生类型

 

 

 

三、as与is的区别

1、AS在转换的同事兼判断兼容性,如果无法进行转换,则 as 返回 null(没有产生新的对象)而不是引发异常。有了AS我想以后就不要再用try-catch来做类型转换的判断了。因此as转换成功要判断是否为null。


2、AS是引用类型类型的转换或者装箱转换,不能用与值类型的转换。如果是值类型只能结合is来强制转换

3、IS只是做类型兼容判断,并不执行真正的类型转换。返回true或false,不会返回null,对象为null也会返回false。


4、AS模式的效率要比IS模式的高,因为借助IS进行类型转换的化,需要执行两次类型兼容检查。而AS只需要做一次类型兼容,一次null检查,null检查要比类型兼容检查快。

 

 

 

参考资料:C#中is、as的区别    http://www.studyofnet.com/news/351.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值