as:用于检查在兼容的引用类型之间执行某些类型的转换。

    Employee myEmployee = myObject as Employee;

    if (myEmployee != null)

    { }

    在这段代码中,CLR核实myObject是否兼容于Employee类型;如果是,as会返回对同一个对象的一个非null

     的引用。如果myObject不兼容于Employee类型,as运算符会返回null。

    注意:as运算符造成CLR只校验一次对象的类型。if语句只是检查myEmployee是否为null。这个检查的速度比校验对象的类型快得多。

as运算符的工作方式与强制类型转换一样,只是它永远不会抛出一个异常。相反,如果对象不能转换,结果就是null。所以,正确的做法是检查最终生成的一引用是否为null。如果企图直接使用最终生成的引用,会抛出一个System.NullReferenceException异常。以下代码对此进行了演示:

    Object o = new Object();        新建一个Object对象。

    Employee e = o as Employee;     将o转型为一个Employee

    e.ToString();                   访问e会抛出一个NullReferenceException异常

    备注:

    as运算符类似于强制转换操作。但是无法进行转换,则as返回null而非引发异常。

    示例:

    expression as Type它等效于以下表达式,但是只计算一次expression。

    expression is Type ?(Type)expression : (Type)null

    注意:as运算符只执行引用转换和装箱转换。as运算符无法执行其它转换,如果用户定义的转换,这类转换应使用强制转换表达式来执行。
 
 原文地址:http://zhidao.baidu.com/link?url=FEZKHKa4psgjAH4JP6PqJOqVq1J_PfvtQe9uTXj4KVeblbVDqdTOibRP5MM4PNA6gycRdiDUne63UU_AHZDQ3_

随机推荐

  1. EDIUS工程里面的素材保存方法

    在实际使用EDIUS剪辑一段视频时,会有好多人问这样一个问题:EDIUS工程里面使用的素材不能自动复制到工程文件夹里面吗,难道要自己一个一个复制进去?面对这样的疑问,来看看小编是如何做的吧. 为了用户 ...

  2. opsview

    nagios,cacti,opsview,prtg,zabbix http://www.opsview.com 1.需要注册一个账号,createyuan#sohu.com

  3. How to send Email using C#

    try { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.gmail. ...

  4. 共享锁【S锁】 排他锁【X锁】

    排它锁又称为写锁((eXclusive lock,简记为X锁)),若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁.它防止任何其它事务获 ...

  5. 百度ueditor学习使用

    1.下载ueditor解压 2. jsp里存放着开发所用到的jar包,导入项目即可 前端页面代码如下: <center> <form action="" meth ...

  6. mysql 10进制与35进制之间的转换 注意Power处理bigint的问题

    35进制的目的是防止0和O造成的视觉误差 BEGIN    DECLARE m_StrHex35 VARCHAR(100); -- 返回35进制表示的结果  DECLARE m_Remainder B ...

  7. python安装psycopg2

    vim ~/.bash_profile export PATH=/Applications/Postgres.app/Contents/Versions/9.4/bin/:$PATH pip inst ...

  8. 利用MyEclipse自动创建PO类、hbm文件(映射文件)、DAO

    原文地址:http://blog.csdn.net/fangzhibin4712/article/details/7179414 前提条件:表sjzdfl  表sjzdxx (使用数据库MySQL) ...

  9. linux下查看系统进程占用的句柄数

    ---查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n 1024 ----查看当前进程打开了多少句柄数 # lsof -n|awk '{print $2}'|sort|uniq ...

  10. 程序包com.sun.image.codec.jpeg不存在 问题的完美解决

    原文地址:http://my.oschina.net/zb0423/blog/86507 在使用Hudson进行打包的过程中,因为我们使用了一个pdf文件产生缩略图的功能,倒置添加的源码文件在mave ...