C#中as和is关键字
2024-09-27 20:10:23
一. as 运算符用于在兼容的引用类型之间执行某些类型的转换。例如:
static void Main(string[] args) { object[] obj = new object[]; obj[] = new class1(); obj[] = "hello"; obj[] = ; for (int i = ; i < obj.Length; i++) { string s = obj[i] as string; if (s != null) { Console.WriteLine(s); } else { Console.WriteLine("not a string"); } } Console.ReadLine(); }
结果:
not a string
hello
not a string
class Base { public override string ToString() { return "Base"; } } class Derived : Base { } class Program { static void Main() { Derived d = new Derived(); Base b = d as Base; if (b != null) { Console.WriteLine(b.ToString()); } } }
对于继承类,允许把子类转换成父类,但是不可以把父类转换成子类,不同类之间,值类型不可转换。
二.is检查对象是否与给定类型兼容。
例如,下面的代码可以确定对象是否为 MyObject 类型的一个实例,或者对象是否为从 MyObject 派生的一个类型:
if (obj is MyObject)
{
}
如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。
如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。
不能重载 is 运算符。
请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。不考虑其他转换,如用户定义的转换。
在 is 运算符的左侧不允许使用匿名方法。lambda 表达式属于例外。
class MyQuickSort { static void Main(string[] args) { class2 c2 = new class2(); if (c2 is class1) { Console.WriteLine("Yes"); } else { Console.WriteLine("No"); } Console.ReadLine(); } } class class1 { public override string ToString() { return ""; } } class class2:class1 { }
结果:yes
最新文章
- WPF三大模板简介
- Popwindow
- .git 目录文件介绍
- SELECT样式,兼容IE6
- 《深入Java虚拟机学习笔记》- 第5章 Java虚拟机
- iOS开发--混编篇&;swift与OC混合使用
- .Net写txt文件-简单的记录执行日志信息代码
- 通过LOGBACK实现每个类、包或自定义级别
- 一篇不错的Gibbs Sampling解释文章,通俗易懂
- asp.net core系列 50 Identity 授权(中)
- Zuul介绍
- python数学第六天【指数族】
- C#项目”XXXXX”针对的是”.NETFramework,Version=v4.7.1”但此计算机没有安装它
- MySQL的or/in/union与索引优化
- 三步解决阿里云绑定公网IP地址失败解决方案
- Spring Boot优化
- Array.prototype.map()和Array.prototypefilter()
- $\mathcal{Friends&#39; \ \ Links}$友情链接
- Java实现两个变量的互换(不借助第3个变量)
- JAVA 分布式 - 分布式介绍
热门文章
- Android USER 版本与ENG 版本的差异
- mysql误删表,无备份
- POJ -1062 昂贵的聘礼(前向星 &;amp;&;amp; SPFA)
- django-生成随机验证码
- 4.1 Routing -- Introduction
- ruby中的win32ole使用
- 141. Linked List Cycle(判断链表是否有环)
- 2018 Multi-University Training Contest 4 Solution
- 2017 Benelux Algorithm Programming Contest (BAPC 17) Solution
- Android 自定义View-字母索引表(一)