is检查对象是否兼容于指定类型,返回Boolean值true或false。使用is永远不会抛出异常。

例:Object o=new Object();

bool b1=(o is Object);//b1=true

bool b2=(o is Employee);//b2=false

如果对象引用为null,则总是返回false,因为没有可检查其类型的对象。

is操作符通常这样使用:

Object o=new Object();

if(o is Employee)//1次

{

Employee emp=(Employee)o;//2次

}

但是这样使用会检查两次o与Employee的类型是否兼容,所以效率比较低,因此C#提供了as操作符来提高效率。

as的工作方式与强制类型转换一样,只是使用as不会抛出异常。

Employee emp=o as Employee;//转换不成功,emp为null。(这里只检查了1次)

if(emp!=null)

{

}

如果as转换成功,则会返回对同一个对象的非null引用。

使用C#的is、as操作符来转型的更多相关文章

  1. 使用C#的is和as操作符来转型

    开发人员经常需要将一个对象从一种类型转换为其他各种类型.C#不要求任何特殊语法即可将一个对象转换为它的任何基类型,因为向基类型的转换被认为是一种安全的隐式转换.然而,将对象转换为它的某个派生类型时,C ...

  2. 使用 C#的 is 和 as 操作符来转型

    在 C#语言中进行类型转换的另一种方式是使用 is 操作符. is 检查一个对象是否兼容于指定的类型,并返回一个 Boolean 值: true 或 false.注意 is 操作符永远不会抛出异常,以 ...

  3. 5.9 C++重载转型操作符

    参考:http://www.weixueyuan.net/view/6387.html 注意: 转型构造函数可以将其它类型的参数转换为类类型,如果我们要进行相反的转换过程,将类类型转换为其它数据类型, ...

  4. c# 基础 object ,new操作符,类型转换

    参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...

  5. 类型基础---CLR Via C#笔记一

    一.所有类型都是从System.Obejct派生 1.下面两个类型定义是完全一致的: class Employee{ ... } class Employee:System.Object{ ... } ...

  6. C#知识点总结系列:5、CLR的组成和运转

    clr基本 CLR(Common Language Runtime)是一个可由多种编程语言使用的“运行时”.(例如:c#,c++/cli,vb,f#,ironpython,ironruby,il... ...

  7. CLR via C#笔记

    第一部分 CLR基础 CLR和JIT “运行时”如何解析类型引用 第二部分 设计类型 使用C#的is和as操作符来转型 运行时的相互联系 基元类型.引用类型和值类型 值类型的装箱和拆箱 哈希码 dyn ...

  8. C#的CLR组成和运转介绍

    原文 clr基本 CLR(Common Language Runtime)是一个可由多种编程语言使用的“运行时”.(例如:c#,c++/cli,vb,f#,ironpython,ironruby,il ...

  9. CLR的组成和运转

    CLR的组成和运转 clr基本 CLR(Common Language Runtime)是一个可由多种编程语言使用的“运行时”.(例如:c#,c++/cli,vb,f#,ironpython,iron ...

随机推荐

  1. mabatis的批量新增sql 初级的 初级的 初级的

    简单描述:做开发的时候,会遇到一次插入好多条记录,怎么做好呢? 解决思路:循环insert啊!  哪凉快那呆着去←!←  这样会增加数据库开销的,当然不能这么干了,要在sql上下功夫.看代码,一下就明 ...

  2. hdu4370 dijkstra矩阵转单向边最短路矩阵+自环闭环

    /* 矩阵太神奇了Orz,网上的题解大多是spfa,不过我发想dijkstra也能做 把n*n的矩阵看成是单向边距离矩阵就行 */ #include<iostream> #include& ...

  3. Spring-data-redis: serializer实例

    spring-data-redis提供了多种serializer策略,这对使用jedis的开发者而言,实在是非常便捷.sdr提供了4种内置的serializer: JdkSerializationRe ...

  4. MVC开发中的常见错误-02-在应用程序配置文件中找不到名为“OAEntities”的连接字符串。

    在应用程序配置文件中找不到名为“OAEntities”的连接字符串. 分析原因:由于Model类是数据库实体模型,通过从数据库中引用的方式添加实体,所以会自动产生一个数据库连接字符串,而程序运行到此, ...

  5. mac下安装Brew 警告:Warning: /usr/local/bin is not in your PATH.

    终端输入命令 export PATH=/usr/local/bin:$PATH

  6. SQL Server常见的操作符

    常见的操作符:Sort.Hash Match(聚合).Filter.Compute Scalar等 一:Sort select Shelf from Production.ProductInvento ...

  7. 升级 Apache Tomcat的办法

    1.下载最新的7系列tomcat cd /usr/local/software wget https://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.92/ ...

  8. XAML绑定到资源文件字符串时失败

    参考:https://stackoverflow.com/questions/19586401/error-in-binding-resource-string-with-a-view-in-wpf ...

  9. Centos6中Docker使用中国官方镜像加速

    vi /etc/sysconfig/docker 增加如下内容: other_args="--registry-mirror=https://registry.docker-cn.com&q ...

  10. [转] React Hot Loader 3 beta 升级指南

    前言 在用 react-hot-loader v1.3 的时候有些深层组件不会很完美的热更新(可能是我使用有问题).然后在 react-hot-loader 首页中看到 React Hot Loade ...