zoukankan      html  css  js  c++  java
  • C#中的as(转)

        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://www.xici.net/d155333263.htm

  • 相关阅读:
    STM32使用keil串口输出中文乱码问题
    STM32CUBEMX忘记配置sys中的debug导致程序只能下载一次的问题
    远渡重洋的开源之路我是买家项目
    其实我就是个技术迷自身定位及展望
    五一上海行
    The Secret 秘密 读书笔记
    MySQL数据库设计复习笔记及项目实战
    PHP可调试团队开发环境配置支持企业级开发
    WIN7下QQ概念版使用手记
    Memento
  • 原文地址:https://www.cnblogs.com/dawenhao/p/7275210.html
Copyright © 2011-2022 走看看