博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# IS 和 AS 的用法和区别
阅读量:6901 次
发布时间:2019-06-27

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

is和as都是在类型转换时常用到得,并且提供的对象可以强制转换为所提供的类型而不会导致引发异常。

IS

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

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

is判断返回值是true或者是false

 

1 class Class1 {} 2 class Class2 {} 3 class Class3 : Class2 { } 4  5 class IsTest 6 { 7     static void Test(object o) 8     { 9         Class1 a;10         Class2 b;11 12         if (o is Class1)13         {14             Console.WriteLine("o is Class1");15             a = (Class1)o;16             // Do something with "a."17         }18         else if (o is Class2)19         {20             Console.WriteLine("o is Class2");21             b = (Class2)o;22             // Do something with "b."23         }24 25         else26         {27             Console.WriteLine("o is neither Class1 nor Class2.");28         }29     }30     static void Main()31     {32         Class1 c1 = new Class1();33         Class2 c2 = new Class2();34         Class3 c3 = new Class3();35         Test(c1);36         Test(c2);37         Test(c3);38         Test("a string");39     }40 }41 /*42 Output:43 o is Class144 o is Class245 o is Class246 o is neither Class1 nor Class2.47 */

 

 

 

AS

as 运算符用于在兼容的引用类型之间执行某些类型的转换,as 运算符类似于强制转换操作。 但是,如果无法进行转换,则 as 返回 null。

注意,as 运算符只执行引用转换和装箱转换。 as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用强制转换表达式来执行。

as判断返回值是某个类型或者是null

 

 

1 class ClassA { } 2 class ClassB { } 3  4 class MainClass 5 { 6     static void Main() 7     { 8         object[] objArray = new object[6]; 9         objArray[0] = new ClassA();10         objArray[1] = new ClassB();11         objArray[2] = "hello";12         objArray[3] = 123;13         objArray[4] = 123.4;14         objArray[5] = null;15 16         for (int i = 0; i < objArray.Length; ++i)17         {18             string s = objArray[i] as string;19             Console.Write("{0}:", i);20             if (s != null)21             {22                 Console.WriteLine("'" + s + "'");23             }24             else25             {26                 Console.WriteLine("not a string");27             }28         }29     }30 }31 /*32 Output:33 0:not a string34 1:not a string35 2:'hello'36 3:not a string37 4:not a string38 5:not a string39 */

 

 

内容中大部分来自msdn

 

转载于:https://www.cnblogs.com/xiaoch/archive/2012/05/09/2491597.html

你可能感兴趣的文章
english单词笔记 001
查看>>
CPU和GPU的区别
查看>>
linux 打包 | autoconf 使用方法
查看>>
linux 上zookeeper安装
查看>>
JSON简介及Java对JSON的解析
查看>>
Candy
查看>>
CentOS 6.4 搭建 ntop 网络流量监控分析平台
查看>>
暑期第一弹<搜索> B - Dungeon Master(三维BFS,6个状态)
查看>>
codeforces Problem-518D:Ilya and Escalator(概率dp)
查看>>
flask—信号(blinker)
查看>>
[LeetCode] NO. 66 Plus One
查看>>
基于jwt和角色的访问控制解决方案
查看>>
C# 测试 SQL SERVER 是否能正常连接【转】
查看>>
GDI资源使用上需要注意的一点
查看>>
也来说说C/C++里的volatile关键字
查看>>
java Sokcet编程(四)--对Socket的认识
查看>>
nginx静态服务器的配置
查看>>
Android在导航栏添加音量加减按钮安卓源码案例
查看>>
【模板】普通平衡树 Splay
查看>>
C# 随机四位数验证码
查看>>