一, is 检查对象是否与给定的类型兼容
@1 检查对象是否是一个实例,或者从父类那儿继承来的
if(students is Person)
{
...//code
}
@2 is 运算符只考虑装箱,拆箱,以及引用转换;
@3 在is运算符的左侧不允许使用匿名方法.(lambda表达式除外)
ex:
View Code
1 int a = 10; 2 object obj = a; 3 if(obj is int) 4 { 5 Console.WriteLine("boxing..."); 6 } 7 a = 20; 8 Console.WriteLine("a={0}",a); 9 Console.WriteLine("obj={0}",obj);10 11 12 //输出结果:13 boxing...14 a=2015 obj=10
二. as 运算符用于执行可兼容类型之间的转换
@1 as 运算符类似于类型转换,不同的是,as运算符转换失败了不会报错,而是返回一个null;
@2 as 运算符只执行引用赚换和装箱转换.as 运算符无法执行用定义的转换;
View Code
1 object[] obj=new object[5]; 2 obj[0] = new MyClass(); 3 obj[1] = "hello"; 4 obj[2] = 123; 5 obj[3] = null; 6 obj[4] = 'a'; 7 for (int i = 0; i < obj.Length; i++) 8 { 9 string s = obj[i] as string;10 if(s!=null)11 {12 Console.WriteLine(s);13 }14 else15 {16 Console.WriteLine("not string ...");17 }18 }