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#

  • 相关阅读:
    八数码问题--bfs
    子集生成——增量构造法
    回溯法
    子集生成——二进制法
    子集生成
    dfs 记忆搜索——注意剪枝方式
    pyhon---信息的爬取与提取---bs4,BeautifulSoup,re库
    008sudo用户管理
    007Linux在线升级yum
    006NFS与TFTP服务器
  • 原文地址:https://www.cnblogs.com/struCoder/p/3488006.html
Copyright © 2011-2022 走看看