如何避免在.NET中出现InvalidCastException?

8

有没有一种方法可以检查C#强制转换是否成功?在某些情况下,根据呈现页面的组合方式,继承不同的主控页,一些强制转换将起作用,而其他强制转换则不会。

我想知道如何检查强制转换是否成功,或者是否只能捕获和处理无效的强制转换异常。

2个回答

20
你可以这样说:
if (Variable is Typename) { 
}
或者
  Variable = OtherVariable as TypeName;

如果强制转换失败,该变量将为null。


呵呵,我其实就知道 -- 我会归咎于星期一。谢谢,让 SO 允许后我会尽快接受答案的。 :-) - Matt
请记住,“as”仅适用于引用类型或可空类型。 - Carlos Muñoz
是的,因为int?等同于Nullable<Int32>,它是一个引用类型。 - Carlos Muñoz
1
不是,它是一个值类型,一个结构体。 - Hans Passant

0

或者,您可以使用 "as" 关键字进行强制转换并检查结果是否为 null。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接