博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Effective C#》读书笔记——条目3:推荐使用is或as而不是强制转换类型<C#语言习惯>...
阅读量:6887 次
发布时间:2019-06-27

本文共 860 字,大约阅读时间需要 2 分钟。

  C#是强类型语言,在开发过程中类型之间的相互转化是一种很常见的场景。C#为类型转换提供两种选择:

  • 1.使用as操作符
  • 2.使用强制类型转换

  或者可以使用更保险的做法,首先用测试一下,能否转换成功,然后再使用或者强制类型转换。在大部分情况下,我们应该尽可能的使用as操作符:

因为相对于强制类型转换来说,as更安全,也更加高效。as和is操作符都不会执行任何用户自定义的转换,它们仅当运行时类型符合目标类型时才能转换成功,也不会在转换时创建新的对象。

 

使用as或is的优势

  •   如果无法进行转换,则 null 而非引发异常,只需要检查返回的引用是否为null即可,避免了异常处理带来的开销。
  •   使用as操作符转换对象为null时返回null,如果使用强制转换的方式null可以被转换成任意的引用类型。

 

as操作符的限制

  •   as操作符不能配合值类型使用,因为它们永远都不可能为null。

  

is操作符的使用

  •   在不确定的强制类型转换中使用异常来控制程序流是一个很糟糕的做法,在转换之前我们可以使用is来避免冒出异常或转换。
  •   当不能使用as进行转换时,才应该使用is操作符。否则is是多余的;因为使用as操作符只需要检查是否为null即可,这样更加简单。

 

小结:

  好的面向对象实践一般都告诉我们要避免转型,但有时侯你却别无选择。在无法避免转型时,我们应该尽可能的使用as和is操作符来更清晰的表达意图。不同的转型方式有不同的规则,is和as操作符在绝大多数情况下都能表达出正确的语义,只有当被测试的对象时正确的类型时才会成功。应尽量选择is和as而不是强制类型转换,因为强制类型转换可能会带来意想不到的负面效应,而且成功或失败往往在我们的预料之外。

 

阅读书目:

扩展阅读:

本文转自gyzhao博客园博客,原文链接:http://www.cnblogs.com/IPrograming/archive/2012/08/21/Effective_CSharp_03.html
,如需转载请自行联系原作者
你可能感兴趣的文章
Unable to launch the IIS Express Web server
查看>>
怎样使用EOS.JS的API
查看>>
Spring Boot项目配置RabbitMQ集群
查看>>
口语详解|为什么“how to say”是错的?
查看>>
前端工程化系列[05] Yeoman脚手架使用入门
查看>>
MySQL必会的28条经典查询
查看>>
原生JS替代jQuery的各种方法汇总
查看>>
彻底删除Cygwin
查看>>
一次单核CPU占用过高问题的处理
查看>>
js常用加解密函数汇总
查看>>
排查nginx、tomcat内存和服务器负载之后
查看>>
[转]比特币测试链——Testnet介绍
查看>>
如何让自己的电脑发布ASP http://jingyan.baidu.com/article/19192ad853224ce53f570748.html
查看>>
SQL基础
查看>>
String是基本的数据类型吗?
查看>>
程序员的八个级别
查看>>
为什么互联网产品的成功率这么低
查看>>
Android动画学习笔记-Android Animation
查看>>
sql2003安装sql2005企业版
查看>>
HDU 4394 Digital Square
查看>>