博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Keywords - is
阅读量:6406 次
发布时间:2019-06-23

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

 记录一下在日常开发过程中遇到的一些C# 基础编程的知识!希望以后能用的着。知识是在平常的开发过程中去学到的。只有用到了,你才能深入的理解它,并用好它。

 本资料来源于:MSND下面是一些相关的code 和 说明

 C# is 关键字: 检查对象是否与给定类型相互兼容。 

 

  C# Keywords - is 的使用

例如,下面的代码可以确定 obj对象是否为 MyObject 类型的一个实例,或者obj对象是否为从 MyObject 派生的一个类型:

 
 这里有三种情况:
1、obj 对象就是指定类型的实例。 所以表达式是true
2、obj 对象是指定类型的基类,也就是MyObject : obj    表达式为 true
3、obj 对象与指定类型不兼容,那么表达式返回的是false.
if (obj is MyObject){} 详细说明:

如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。

如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。

不能重载 is 运算符。

请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。 不考虑其他转换,如用户定义的转换。

在 is 运算符的左侧不允许使用匿名方法。 lambda 表达式属于例外。

   示例:

class Class1 {}class Class2 {}class Class3 : Class2 { }class IsTest{    static void Test(object o)    {        Class1 a;        Class2 b;        if (o is Class1)        {            Console.WriteLine("o is Class1");            a = (Class1)o;            // Do something with "a."        }        else if (o is Class2)        {            Console.WriteLine("o is Class2");            b = (Class2)o;            // Do something with "b."        }        else        {            Console.WriteLine("o is neither Class1 nor Class2.");        }    }    static void Main()    {        Class1 c1 = new Class1();        Class2 c2 = new Class2();        Class3 c3 = new Class3();        Test(c1);        Test(c2);        Test(c3);  // 因为class3 继承class2 ,或这么理解: class2 是class3的基类。 在用is 关键字的时候。它会返回true.        Test("a string");    }}/*Output:o is Class1o is Class2o is Class2o is neither Class1 nor Class2.*/

 

转载于:https://www.cnblogs.com/htwdz-qhm/p/4153930.html

你可能感兴趣的文章
golang笔记——数组与切片
查看>>
屏蔽可忽略的js脚本错误
查看>>
散文分享
查看>>
【Vue】vue.js常用指令
查看>>
NFS学习
查看>>
MySql常用命令总结
查看>>
又一年...
查看>>
文件上传框的美化+预览+ajax
查看>>
Linux VFS
查看>>
ext不能选中复制属性_如何实现Extjs的grid单元格只让选择(即可以复制单元格内容)但是不让修改?...
查看>>
python中print的作用*8、不能+8_在 Python 3.x 中语句 print(*[1,2,3]) 不能正确执行。 (1.0分)_学小易找答案...
查看>>
python 生成html代码_使用Python Markdown 生成 html
查看>>
axure如何导出原件_Axure 教程:轻松导出图标字体所有图标
查看>>
laravel input值必须不等于0_框架不提供,动手造一个:Laravel表单验证自定义用法...
查看>>
cad填充图案乱理石_太快了吧!原来大神是这样用CAD图案填充的
查看>>
activator.createinstance 需要垃圾回收么_在垃圾回收器中有哪几种判断是否需要被回收的方法...
查看>>
rocketmq 消息指定_RocketMQ入坑系列(一)角色介绍及基本使用
查看>>
redis zset转set 反序列化失败_掌握好Redis的数据类型,面试心里有底了
查看>>
p图软件pⅰc_娱乐圈最塑料的夫妻,P图永远只P自己,太精彩了吧!
查看>>
jenkins 手动执行_Jenkins 入门
查看>>