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. postgreSQL 时间线

    “时间线”(Timeline)是PG一个很有特色的概念,在备份恢复方面的文档里面时有出现.但针对这个概念的详细解释却很少,也让人不太好理解,我们在此仔细解析一下. 时间线的引入 为了理解引入时间线的背 ...

  2. sql server 移动表到文件组

    存储过程如下: USE [SCC_Test_FileGroupAndIndex] GO /****** Object:  StoredProcedure [dbo].[sp_MoveTable]    ...

  3. Integer.parseInt()和Integer.valueOf()有什么区别

    jdk的源代码的时候注意到Integer.parseInt(s) 和 Integer.valueOf(s)的具体代码的实现有所区别: Java代码 public static int parseInt ...

  4. how-to-install-hyper-v-on-a-virtual-machine-in-hyper-v.aspx

    BEFORE STARTING IT IS IMPORTANT TO KNOW THAT THIS ENVIRONMENT IS NOT SUPPORTED BY MICROSOFT. USE IT ...

  5. linux概念之IPC

    一切皆文件,文件类型为普通,目录,管道,socket,链接,块设备,字符设备cd /proc/2305/fd/ 该进程打开了6个文件描述符,三个为字符设备即012,三个为socket即345,sock ...

  6. OpenJudge计算概论-求一元二次方程的根【含复数根的计算、浮点数与0的大小比较】

    /*====================================================================== 求一元二次方程的根 总时间限制: 1000ms 内存限 ...

  7. kubernetes集群部署

    鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ...

  8. JS 阻止浏览器默认行为和冒泡事件

    JS 冒泡事件   首先讲解一下js中preventDefault和stopPropagation两个方法的区别: preventDefault方法的起什么作用呢?我们知道比如<a href=& ...

  9. lambda 的使用汇总

    d=lambda x:x+1print(d(10))lambda 相当于一个轻量函数返回 d=lambda x:x+1 if x>0 else "error"print(d( ...

  10. C语言常用的小代码

    圆周率Pi tan(Pi/4)=1 => Pi=4*arctan(1) 反正切函数arctan()在C语言里表示为atan(),为保证精度取圆周率的代码如下: const double Pi = ...