博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中IS和AS操作符的区别(转)
阅读量:5313 次
发布时间:2019-06-14

本文共 861 字,大约阅读时间需要 2 分钟。

原文地址:

1、概念描述

  is是C#中用于类型兼容性判断的操作符,检查一个对象是否兼容于其他指定的类型, 如果一个对象是某个类型或是其父类型的话就返回为true,否则的话就会返回为false。

is的规则如下:

  检查对象类型的兼容性,并返回结果,true或者false; 

  不会抛出异常; 
  如果对象为null,则返回值永远为false。

如下例说明

  System.Boolean b1 = (o is System.Object);//b1 为true
  System.Boolean b2 = (o is Employee);//b2为false
  如果对象引用为null,那么is操作符总是返回为false,因为没有对象可以检查其类型,就像下面代码一样
  if(o is Employee)

  {

     Employee e = (Employee) o;
     //在if语句中使用e
  }
  在上面代码中,其实CLR对对象类型检查了两次:is操作首先检查o所引用的对象是否和employee类型兼容。

  如果兼容,那么在if语句内CLR在执行转换时又会检查o是否为一个Employee引用。

as是C#中用于类型兼容性判断和类型转换的操作符,它同时进行类型的判断和类型的转换。他可以在简化代码的同时,提高性能。

as的规则如下:

  检查对象类型的兼容性并进行强制转换,返回结果,如果不兼容就返回null; 

  不会抛出异常; 
  如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。 
  Employee e = o as Employee;
  if(e != null)
  {
     //在if语句中使用e
  }
  这种as操作只进行了1次的类型检查,所以提高了性能。如果类型相同就返回一个非空的引用,否则就返回一个空引用。

转载于:https://www.cnblogs.com/lovezhangyu/p/3381856.html

你可能感兴趣的文章
Python学习笔记第二十一周
查看>>
js 获取视频的第一帧
查看>>
各种正则验证
查看>>
C#中IS和AS操作符的区别(转)
查看>>
win7远程桌面连接
查看>>
深入浅出JMS(一)——JMS简单介绍
查看>>
[PTA] 数据结构与算法题目集 6-4 链式表的按序号查找 & 6-5 链式表操作集 & 6-6 带头结点的链式表操作集...
查看>>
观察者模式(Observer)
查看>>
DPDK编译步骤
查看>>
Python基础理论 - 面向对象
查看>>
数据仓库建设—维度建模
查看>>
(转载)Ubuntu 安装GNU Scientific library(GSL)
查看>>
java Map常用方法封装
查看>>
欧几里德与扩展欧几里德算法
查看>>
python中深浅拷贝
查看>>
python中numpy.r_和numpy.c_
查看>>
MySQL关于sql_mode的修改(timestamp的默认值不正确)
查看>>
laravel如何打印orm封装的sql语句
查看>>
大道至简阅读笔记02
查看>>
如何让在panel里的子窗体随panel的大小改变而变化?(转)
查看>>