zoukankan      html  css  js  c++  java
  • 关于C#中使用is和as操作符来转型

    过去对于这还不是怎么了解,今天自己细细的读了这方面的书。所以写个博客分享下吧。

    在C#语言中进行类型转换的另一种方式是使用is操作符,is检查一个对象是否兼容指定的类型,并且返回一个boolean值,要注意的地方就是is操作符永远不会抛出异常。它的用法呢就是诸如这样:

    if(o is Student){
           Student stu = (Student)o;
    
    }
    

    在这段代码中中CLR实际会检查两次对象的类型,is操作符首先先核实o是否兼容于Student类型,如果是,那么在if语句内部执行转型时,CLR再次核实o是否引用一个Student。可话又说回来了,CLR在这是增强了安全性,但是,无疑对性能造成了一定的影响,。这是因为CLR首先必须判断变量0引用的对象的实际类型,之后CLR必须遍历层次结构。但是在C#中还提供了as操作符。其目的就是简化这种代码的写法,同时呢,也提高了性能

    Student stu = o as Student;
    if(stu != null){
           //you code here  
    
    }
    

    as操作符永远也不会抛出一个异常,如果不能转型则结果就是一个null,正确的做法就是检查最终生成的应用是否为null

    参考:CLR Via C#

  • 相关阅读:
    洛谷 P2260 [清华集训2012]模积和 || bzoj2956
    Mass Change Queries Codeforces
    Single-use Stones Codeforces
    洛谷 P4503 [CTSC2014]企鹅QQ
    洛谷 P1463 [HAOI2007]反素数
    Bear and Tower of Cubes Codeforces
    洛谷 P1593 因子和 || Sumdiv POJ
    记一次服务器inodes数报警的事件
    MySQL参数详解
    Django基础流程
  • 原文地址:https://www.cnblogs.com/struCoder/p/3488006.html
Copyright © 2011-2022 走看看