这篇文章主要介绍了C#中is与as的区别,较为详细的分析了is与as的原理与特性及用法区别,具备很好的学习借鉴价值,须要的朋友能够参考下c#
本文实例分析了C#中is与as的区别,分享给你们供你们参考。具体分析以下:函数
1、C#类型的转换学习
在c#中类型的转换分两种:显式和隐式,基本的规则以下:spa
一、基类对象转化为子类对象,必须显式转换,规则:(类型名) 对象。
二、值类型和引用类型的转换采用装箱(boxing)或拆箱(unboxing).
三、子类转化为基类对象。
四、基本类型互相之间转化能够用Covent类来实现。
五、字符串类型转换为对应的基本类型用Parse方法,除了String类型外其余的类型均可以用Parse方法。
六、用GetType能够取得对象的精确类型。
七、子类转化为基类,采用隐式转换。.net
2、C#中的is设计
检查一个对象是否兼容于其余指定的类型,并返回一个Bool值,若是一个对象是某个类型或是其父类型的话就返回为true,不然的话就会返回为false。永远不会抛出异常
若是对象引用为null,那么is操做符老是返回为false,由于没有对象能够检查其类型。code
例如 htm
代码以下:对象
3、C#中as的转换规则字符串
一、检查对象类型的兼容性,并返回转换结果,若是不兼容则返回null;
二、不会抛出异常;
三、若是结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
四、用as来进行类型转换的时候,所要转换的对象类型必须是目标类型或者转换目标类型的派生类型
例如
使用as操做符有以下几点限制
第一个就是,不用在类型之间进行类型转化,即以下编写就会出现编译错误。
第二个就是,不能应用在值类型数据,即不能以下写(也会出现编译错误)。
4、as与is的区别
一、AS在转换的同事兼判断兼容性,若是没法进行转换,则 as 返回 null(没有产生新的对象)而不是引起异常。有了AS我想之后就不要再用try-catch来作类型转换的判断了。所以as转换成功要判断是否为null。
二、AS是引用类型类型的转换或者装箱转换,不能用与值类型的转换。若是是值类型只能结合is来强制转换
三、IS只是作类型兼容判断,并不执行真正的类型转换。返回true或false,不会返回null,对象为null也会返回false。
四、AS模式的效率要比IS模式的高,由于借助IS进行类型转换的化,须要执行两次类型兼容检查。而AS只须要作一次类型兼容,一次null检查,null检查要比类型兼容检查快。
5、在进行类型转换的时候,能够按照以下的方式进行选择
一、Object => 已知引用类型
使用as操做符来完成
二、Object => 已知值类型
先使用is操做符来进行判断,再用类型强转方式进行转换
三、已知引用类型之间转换
首先须要相应类型提供转换函数,再用类型强转方式进行转换
四、已知值类型之间转换
最好使用系统提供的Convert类所涉及的静态方法
6、(int)和Int32.Parse(),Convert.ToInt32()三者的区别
一、(int)转换:用在数值范围大的类型转换成数值范围小的类型时使用,可是若是被转换的数值大于或者小于数值范围,则获得一个错误的结果,利用这种转换方式不能将string转换成int,会报错。
二、Int32.Parse()转换:在符合数字格式的string到int类型转换过程当中使用,并能够对错误的string数字格式的抛出相应的异常。
三、Convert.ToInt32()转换:使用这种转换,所提供的字符串必须是数值的有效表达方式,该数还必须不是溢出的数。不然抛出异常。
但愿本文所述对你们的C#程序设计有所帮助。
转载自:http://www.jb51.net/article/56657.htm。