C#中as和is关键字
一. as 运算符用于在兼容的引用类型之间执行某些类型的转换。例如:
{
object[] obj = new object[3];
obj[0] = new class1();
obj[1] = "hello";
obj[2] = 10;
for (int i = 0; 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
{
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 表达式属于例外。
{
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
转载于:https://www.cnblogs.com/haiyang1985/archive/2009/03/12/1410023.html
C#中as和is关键字相关推荐
- Java中的两个关键字——super、this
Java中的两个关键字--super.this 神话丿小王子的博客主页 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 sup ...
- Java中的50个关键字
2019独角兽企业重金招聘Python工程师标准>>> Java中的50个关键字 关键字也称为保留字,是指java语言中规定了特定含义的标示符.对于保留字,用户只能按照系统规定的方式 ...
- C++中mutable、volatile关键字
C++中mutable.volatile关键字 mutable和volatile 很少遇到这两个关键字,学嵌入式估计知道后者,深入研究C++的估计知道前者. (1)mutable 在C++中,muta ...
- 在switch case 语句中能否使用continue 关键字?为什么?
在switch case 语句中能否使用continue 关键字?为什么? #include <stdio.h> int main() { int a; p ...
- mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...
SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字) 语法请参考: 按照语法编写语句 DECLARE @ ...
- C++中struct和class关键字的区别
文章目录 1 C++中struct和class关键字的区别 1.1 类的关键字 1 C++中struct和class关键字的区别 1.1 类的关键字 C++中类的关键字: struct在C语言中已经有 ...
- vb中多个串口通讯_VB中的42个关键字,你知道都是哪些吗?
VB中的关键字大全 大家好,不知道大家在学习VB编程的过程中,有注意过VB中的关键字吗? 关键字是VB程序内部已经定义好的,可以供我们在编程时直接使用的. 大家要注意一点,在我们写VB代码时,变量或者 ...
- python中定义函数常用关键字_Python 中定义函数的关键字是 _________________ 。_学小易找答案...
[其它]实验4-串和数组-实验任务书.docx [填空题]表达式 'abc' in ['abcdefg'] 的值为______________. [填空题]已知 x = range(1,4) 和 y ...
- java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理
知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...
- 用lucene实现在一个(或者多个)字段中查找多个关键字
最近跟着师兄们做个项目,我的任务就是负责做个"全文检索"的小模块.用到了Lucene的索引,下面的是其中的用Lucene实现在索引的一个字段(比如文章内容字段)进行查找多个关键字的 ...
最新文章
- 楚留香手游系统互通的服务器,楚留香手游互通服务器汇总 哪些服能一起玩
- 使用javascript开发2048
- iMeta期刊推特官方帐号@iMetaJournal上线
- 【Java设计模式】策略模式
- afinal Android 快速开发框架
- PHP-fpm的master进程杀死work还能处理任务吗
- 《算法竞赛入门经典》习题3-1 得分(Score,ACM、ICPC Seoul 2005,UVa1585)
- c#中BackGroundWorker控件
- 让Spring 3中jsp的数据对象使用懒加载(FetchType.LAZY)与Controller的JSR 303并存
- echarts 引用地图的json
- Hibernate Session合并,更新,保存,saveOrUpdate,持久化示例
- python全局变量的修改 线程共享全局变量
- 个人商业画布分析-0408-v1.0王玉娟
- 文字识别 SDK 11 给大家看一个手册
- win10 suse linux,Windows 10现已支持安装SUSE Linux子系统 附安装教程|蓝点网
- VB.NET绘图8---总结
- javaee jsp实现留言板(eclipse+mysql),五个界面,留言、登陆、注册等
- 美国信息交换标准代码(ASCII)表
- 德勤咨询:2021年制造业+人工智能创新应用发展报告
- 和人工智能一起选剧本 | 拍什么电影,AI说了算?