如何避免类型转换时的异常

分析问题

  程序员经常会面临一些类型转行的工作,其中有些是确定可转换的,例如把一个类型对象转换成基类对象,而有些则是带有尝试性的,譬如把基类引用的对象转换成子类,当执行这样的尝试性转换时,程序员就应该做好捕捉异常的准备。

  当一个不正确的类型转行发生时,就会产生InvalidCastException异常,程序员有时候会用try、catch块做一些尝试性的类型转换,这样的代码没有任何错误,但是性能却相当糟糕。异常是一种耗费资源的机制,每当异常被抛出时,异常堆栈将被建立,异常信息将被加载,而通常这些工作成本相对较高,并且在尝试性转换时,这些信息都没有意义。所以C#提供了另外一种语法来进行尝试性的类型转换,那就是关键字is和as所做的工作。

  is语句用来判断一个对象是否可以转换为另一个对象,如果可以则返回true,不行则返回false。as语句实现了大致类似的功能,它对对象进行尝试性的检查,如果可以转换成指定对象,则返回转化后的引用,不可以的话则返回null。

答案

  用is和as语句代替强制转换,可以有效地避免InvalidCastExcepiton异常,执行效率相对较高。读者应该使用is或者as语句来代替直接使用强制转换。

如何避免类型转换时的异常

时间: 2024-08-01 22:42:44

如何避免类型转换时的异常的相关文章

is和as在类型转换时的性能差异

is和as是.NET中常用的操作,两者都可以实现类型的安全转换,但两者却有所不同. 如 public class Employee { } public void Add(object obj)//写法一 { Employee e=null; if(obj is Employee) { e=(Employee)obj; //正常处理 } else { //其他处理 } } public void Add(object obj)//写法二 { Employee e=obj as Employee;

是指存在继承关系的对象,不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时

这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常.在继承链中,我们将子类向父类转换称为“向上转型”,将父类向子类转换称为“向下转型”.很多时候,我们会... Coda 发布于 2015-04-12 14:09 评论(1)阅读(72) 1 http://www.djob.com/job_8EED14ACE3DE31D0.htmlhttp://www.

使用hql查询时的异常:Xxx is not mapped[from Xxx where ...]

今天项目中使用hql查询时,出现    QingAoCenterInfo is not mapped[from QingAoCenterInfo where...] 显然是Hibernate映射关系出现了问题. 出现这种异常首先要查看查询语句中是否使用了数据库表中的表名,而不是实体类. 查看我的代码: centerList = manager.find("from QingAoCenterInfo center where center.type = ? and center.centerNam

【安卓】imageView.scaleType取centerCrop后,再用padding时显示异常?

imgView.setCropToPadding(true);即可          [安卓]imageView.scaleType取centerCrop后,再用padding时显示异常?,布布扣,bubuko.com

OpenCV访问Mat对象中数据时发生异常---Mat中的数据访问

7.1和7.1.1由于越狱不成熟,半完美越狱后电脑上无法访问系统越狱目录,如var usr 等等. 今天有些意外地发现,可以在电脑上使用手机的越狱目录我手机 i4 7.1.1 联通 半完美越狱,没装Afc2Add,也没装Appsync 附上  --->我的半完美越狱过程 好了,下面直接正题 一.前提,必须安装ifile! 打开ifile,并转到 /var/mobile/media 目录下,然后点击右上角的 [ 编辑 ]如图: 二.点左下角的 + 号创建,如图: 三.点 [ 类型],选择[符号链接

SharePoint 创建SSP时出现异常,信息如 设置失败: 找不到 Windows NT 用户或组 '【

1.安装完sharepoint后,使用"sharepoint产品和技术配置向导"配置时,中间有连接sql server时输入的用户名和信息,(如果域是test.com)切记只能输入test/administrator的用户名格式.   2.如果还有这样的问题,可以打上sharepoint的补丁包,参考网址:    http://support.microsoft.com/kb/953471 SharePoint 创建SSP时出现异常,信息如 设置失败: 找不到 Windows NT 用

spring autowired时发生异常情况

spring beanFactory那些就不说了,这次发生这个异常纠结好了好久,网上找了很多资料看,终于发现问题. 自动装配bean注入的时候,如果Spring配置定义了aop声明式事务,类似如下方式 <aop:config>  <aop:pointcut id="serviceMethods2"   expression="execution(public * net.villion.framework..*(..))" />  <a

.net安装部署“Error 1001 在初始化安装时发生异常” 的解决方法

状况描述:打包安装后,如果删除安装目录中的某个文件,这时从桌面快捷方式启动软件系统会自动运行修复程序,此时因为路径问题会报出"错误 1001 在初始化安装时发生异常xxx"的异常.(前提是你的安装部署中加入了"自定义操作",并为其传值). 查找原因原来是"自定义操作"中CustomActionData值有误造成.未出错前的CustomActionData. /DbName=[DBNAME] /ServerName=[SERVERNAME] /Us

产品在焊接时出现异常,尤其是尺寸较大的QFP芯片,焊接后出现虚焊、冷焊、假焊等问题?

1 不良描述 客户采用我们提供的SMT设备后,部分产品在焊接时出现异常,尤其是尺寸较大的QFP芯片,焊接后出现虚焊.冷焊.假焊等不良.应客户要求对这一批不良产品以及生产条件进行分析,以便找到改善的依据. 对不良样品进行外观检查,发现多处排阻出现严重偏移导致断路(图3):部分样品上QFP芯片偏移严重,导致焊接不良(图4):部分样品的QFP芯片出现冷焊现象(图5):部分样品出现贴片问题,芯片底部有异物(图6):部分样品的焊盘不沾锡(图7):未焊接的PCB焊盘也存在一定程度的破损(图8) 2   分析