在C#程序中经常出现类型的强制转换,如:
double d=10.5;
int i=(int)d;
这样得到i的值为10。但是这么转换在一些情况下会出现转换错误,如:
class C1{};
class C2:C1 {};
C1 c11=new C1();
C2 c22=(C1)C1;
这样转换就会失败,需要进行处理,如try catch;
try
{
C2 c22=(C1)c11;
}
catch(Exception e)
{
console.writelinr(e.message);
}
但是如果使用AS,那么强制转换为
C2 c22=c11 as C2;
相比较而言,as无疑是最合适,他与try catch 相比较来说,具有安全性和高效性。(转换失败不会产生新的对象,会直接赋值为空)
但是as必须用于引用类型和可为空类型。