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

本文共 746 字,大约阅读时间需要 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而不是强制类型转换,因为强制类型转换可能会带来意想不到的负面效应,而且成功或失败往往在我们的预料之外。

 

阅读书目:

扩展阅读:

转载地址:http://tfxql.baihongyu.com/

你可能感兴趣的文章
JAVA第一周学习
查看>>
sql语句select group by order by where一般先后顺序 转载
查看>>
for循环是怎么工作的
查看>>
支付宝支付
查看>>
第三周 动态规划算法(1):1.集合加法
查看>>
iPhone 上怎么给CSS定义 active 样式
查看>>
讨论CGContextDrawImage
查看>>
Servlet基础
查看>>
tomcat+mysql安装配置,项目部署(上)
查看>>
linux sysrq
查看>>
Incorrect NSStringEncoding value 0x0000 detected.
查看>>
(转)as3数组的深复制和浅复制
查看>>
Choose a destination with a supported architecture in order to run on this device.
查看>>
HTML5/CSS3系列教程:HTML5 区域(Sectioning)的重要性
查看>>
Spring Batch学习笔记
查看>>
asp.net mvc 如何在执行完某任务后返回原来页面
查看>>
Oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子
查看>>
ASP.NET 中 GridView(网格视图)的使用前台绑定
查看>>
Windows的本地时间(LocalTime)、系统时间(SystemTime)、格林威治时间(UTC-Time)、文件时间(FileTime)之间的转换...
查看>>
[转]XBRL应用软件分类
查看>>