• c# as与is的区别


       在c#语言中关于类型的判断与转换有is和as这2种操作符,具体用法如下:

        is检查一个对象是否兼任与指定的类型,并返回一个Boolean值:true或false,主要,is操作符永远不会抛出异常,一下代码进行了演示:

                object o = new object();
                Boolean b1=(o is object);    //b1为true
                Boolean b2 = (o is Boolean); //b1为false

      如果对象引用是Null,is操作符总是返回false,因为没有可检查其类型的对象。

      is操作符同城像下面这样使用

    if(o is Emplyoee){
       Employee e(Employee) o;  在if语句剩余的部分中使用e
    }

       在这段代码中,ClR实际回检查两次对象的类型。is操作符首先核实o是否兼任与Employee类型,如果是,那么在if语句内部执行转换时,CLR再次核实o是否引用一个Employee。CLR的类型检查增强了安全性,当无疑也会对性能造成一定的影响。这是因为CLR首先必须判断变量(o)引用的对象的实际类型,然后,CLR必须遍历继承层次的结构,用每个基类型去核对指定的类型,由于这是一个相当常用的编程模式,所以c#专门提供了as操作符,目的就是简化这种代码的写法,同时提升其性能。

    Employee e=o as Employee
    if(e !=null){
        //在if语句中使用e
    }

      这段代码中,CLR核实o是否兼任与Employee类型,如果是,as回返回对同一个对象的一个非null引用,如果O不兼任与Employee类型,as操作符回返回Null,注意,as操作符造成CLR只校验一次对象的类型,if语句只检查e是否为null,这个检查的速度比校验对象的类型快得多。

        as操作符的工作方式与强类型转换一样,只是它永远不会抛出一个异常——相反,如果对象不能转型,结果就是null,所以,正确的做法是检查最终生成的引用是否为null

      参考:《CLR.via c#》

  • 相关阅读:
    其他内容
    html标签
    ambari安装集群下安装kafka manager
    greenplum-cc-web4.0监控安装
    ambari安装集群下python连接hbase之安装thrift
    hadoop运维问题记录
    Ambari2.6.0 安装HDP2.6.3(离线安装)
    mongodb 定时备份
    linux top命令详解
    Sublime Text3配置Python环境
  • 原文地址:https://www.cnblogs.com/studydp/p/9045860.html
Copyright © 2020-2023  润新知