当前位置: 首页 > news >正文

c# is和as的区别

关于类型的判断和转换有is和as这2个操作符。具体区别和用法如下
is就是处于对类型的判断。返回true和false。如果一个对象是某个类型或是其父类型的话就返回为true,否则的话就会返回为false。另外is操作符永远不会抛出异常。代码如下:

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引用。这种编程范式十分常见,c#便提供了一种新的类型检查,转换方式。即as操作符,他可以在简化代码的同时,提高性能。代码如下:

Employee e  =  o  as  Employee;
if (e  !=   null )
{
   
// 在if语句中使用e
}

这种as操作即便等同于上面代码,同时只进行了1次的类型检查,所以提高了性能。如果类型相同就返回一个非空的引用,否则就返回一个空引用。

转载于:https://www.cnblogs.com/Griffin/p/3327863.html

相关文章:

  • 各种面试题 挺好 挺重要 项目中 有用 的地方
  • Nginx 1.正向代理与反向代理
  • C++ 运行单个实例,防止程序多次启动
  • systemC的安装
  • 利用hadoop来解决“共同好友”的问题
  • zabbix监控apache
  • 创建Windows窗体 : WinMain() 与 WndProc()
  • 不要再被骗了------QQ盗号原理大揭秘
  • Heroku安装与使用
  • webpack 4.14配置详解
  • 中间有文字的分割线效果
  • ie6,ie7下overflow失效解决方法
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 关于DAMAGE: after Normal block的问题 【from http://blog.sina.com.cn/s/blog_a4864fde01014962.html】...
  • ispoweroftwo 判断2的次幂【转】
  • [数据结构]链表的实现在PHP中
  • [译]如何构建服务器端web组件,为何要构建?
  • 【EOS】Cleos基础
  • 03Go 类型总结
  • C++11: atomic 头文件
  • co.js - 让异步代码同步化
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Intervention/image 图片处理扩展包的安装和使用
  • KMP算法及优化
  • Koa2 之文件上传下载
  • orm2 中文文档 3.1 模型属性
  • Python_OOP
  • SQLServer插入数据
  • SQLServer之创建数据库快照
  • vue总结
  • Wamp集成环境 添加PHP的新版本
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 机器学习 vs. 深度学习
  • 类orAPI - 收藏集 - 掘金
  • 排序算法学习笔记
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 详解NodeJs流之一
  • 一道闭包题引发的思考
  • 找一份好的前端工作,起点很重要
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • # 数据结构
  • ###C语言程序设计-----C语言学习(6)#
  • $().each和$.each的区别
  • (6)设计一个TimeMap
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C#)获取字符编码的类
  • (LeetCode 49)Anagrams
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (三)终结任务
  • (实战篇)如何缓存数据
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)