1 形式:
as :
object obj = Factory.GetObject();
MyType t = obj as MyType;
if (null != t)
{
// work with t, it is a MyType;
}
else
{
// report failure;
}
强制转换:
object obj = Factory.GetObject();
try
{
MyType t;
t = (MyType)obj;
}
catch (InvalidCastException ex)
{
// report failure.
}
强制转换不仅要捕获异常,还要判断obj是否为null, 因为null可以被强制转成任何类型;
as 更安全;
使用时只需检查返回的引用是否为null既可;
2 as 不能配合值类型
int i = obj as int; // 编译错误;