您的位置:首页 > 编程语言 > C#

C#关键字 - is 和 as

2010-06-25 11:19 302 查看
isas运算符,是用于类型转换的,提供了对类型兼容性的判断。

从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制。

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用于类型的转换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: