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#

  • 相关阅读:
    js---05 自定义属性
    js---04 属性 this
    js---03属性操作
    js02---字符串
    js01----json,数组
    android framework 02
    android framework 01
    Android Service完全解析,关于服务你所需知道的一切(下)
    Android Framework 记录之二
    Android Framework 记录之一
  • 原文地址:https://www.cnblogs.com/struCoder/p/3488006.html
Copyright © 2011-2022 走看看