C#关键字 - is 和 as
2010-06-25 11:19
302 查看
is和as运算符,是用于类型转换的,提供了对类型兼容性的判断。
从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制。
is
检查对象型的兼容性,并返回结果:ture or false
如果对象为null,则返回值永远为false
如果已知表达式始终为ture或者false,则is 关键字讲导致编译时警告。
不会抛出异常
不能重载is运算符
as
检查对象类型的兼容性,并返回结果,如果不兼容旧返回null
不会抛出异常
如果判断结果为空,则强制执行类型转换将抛出NullReferenceException 异常
as必须和引用类型一起使用
as运算符只执行引用转换和装箱操作,无法进行其他如用户自定义转换。
上面的操作,在语义上等效于:
ASSample b=o is ASSample ? (ASSample)o : (ASSample)null;
总结:
is 和as 提供了灵活的类型转换方式,is一般用于进行类型的判断,而as用于类型的转换。
从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制。
is
检查对象型的兼容性,并返回结果:ture or false
如果对象为null,则返回值永远为false
如果已知表达式始终为ture或者false,则is 关键字讲导致编译时警告。
不会抛出异常
不能重载is运算符
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); Test("a string"); } } /* Output: o is Class1 o is Class2 o is Class2 o is neither Class1 nor Class2. */
as
检查对象类型的兼容性,并返回结果,如果不兼容旧返回null
不会抛出异常
如果判断结果为空,则强制执行类型转换将抛出NullReferenceException 异常
as必须和引用类型一起使用
as运算符只执行引用转换和装箱操作,无法进行其他如用户自定义转换。
class ASSample { public static void Main() { object o = new object(); ASSample b = o as ASSample; if (b != null) { //执行关于b的操作 } } }
上面的操作,在语义上等效于:
ASSample b=o is ASSample ? (ASSample)o : (ASSample)null;
总结:
is 和as 提供了灵活的类型转换方式,is一般用于进行类型的判断,而as用于类型的转换。
相关文章推荐
- C#中AS和IS关键字的用法
- C#中is,as,using关键字的使用
- C#中as和is关键字的作用
- Unity3d_FSM_C#'s ABC_(is_as关键字的使用)
- 关于C#中ArcGIS Engine接口的 as 和 is 关键字
- C#中AS和IS关键字的用法
- 如何:使用 C++ 实现 C# 的 is 和 as 关键字
- C#中的is,as关键字
- 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)
- C#中的is和as关键字(摘抄)
- C#中is与as关键字的区别
- C#基础之is,as关键字
- GetType与C#关键字typeof ,is,as
- C#中as和is关键字
- C#中as和is关键字
- 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)
- c# 中 is 和 as 关键字的区别
- C#中的is,as关键字
- C# 关键字is,as的区别
- C#中as和is关键字作用 收藏