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. pgbouncer配置

    DESCRIPTION pgbouncer is a PostgreSQL connection pooler. Any target application can be connected to  ...

  2. C#学习之初步理解委托、事件、匿名方法和Lambda

    最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对 ...

  3. sql复制表

    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句       Insert是T-sql中常用语句,Insert INTO table(field1,field2,... ...

  4. Python_Day6_反射_正则表达式之篇

    一.反射 定义:利用字符串形式去对象(模块)中操作(寻找/检查/删除/设置)成员 #getattr:获取模块中属性 #hasattr:检查模块中是否存在某个成员(函数) #delattr:删除模块中成 ...

  5. unity shader random number

    http://gamedev.stackexchange.com/questions/32681/random-number-hlsl

  6. JavaScript中知而不全的this (转)

    原文引自:http://www.cnblogs.com/snandy/p/4773184.html 都说 JavaScript 是一种很灵活的语言,这其实也可以说它是一个混乱的语言.它把函数式编程和面 ...

  7. FileMode文件模式

    一.FileMode.Append Append追加: 如果文件存在,则打开文件,把指针指到文件的末尾:如果不存在,则新建文件 二.FileMode.Create Create:新建 如果文件存在,则 ...

  8. Knockout应用开发指南(完整版) 目录索引

    http://learn.knockoutjs.com/  所有示例和代码都在在上面直接运行预览 注意:因为它用了google的cdn加速,所要要用代_理+_翻_墙才能正常加载 使用Knockout有 ...

  9. [navicat] Navicat for Oracle Cannot load OCI DLL

    1. 本地安装的是64位的Oracle,但由于Navicat仅支持32位的,因此我们还需下载一个32位的客户端. 2.

  10. linux crontab 实现每秒执行(转)

    linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. 1.使用延时来实现每N秒执行 创建一个php做执行动作,非常简单,就是把当前时间写入log ...