在C#中强制转换和使用“ as”有什么区别?
如果存在差异,那么进行以下转换的两种方式之间有什么区别?
在这种情况下e
是一个GridViewRowEventArgs
对象。
GridView gv = (GridView)e.Row.FindControl("gv"); //first wayGridView gv2 = e.Row.FindControl("gv") as GridView; //second way
回答:
不同之处在于:
- 如果强制转换失败,则会引发
InvalidCastException
。 - 如果
as
运算符失败,则仅返回空引用。 - 您不能使用
as
非空值类型(例如,您不能使用“o as int
”)。 - 强制转换运算符还用于取消装箱。(
as
可用于取消装箱为可为空的值类型。) - 强制转换运算符还可以执行用户定义的转换。
编辑:我已经在其他地方写过有关何时适合使用哪个运算符的文章。可能值得一读…
以上是 在C#中强制转换和使用“ as”有什么区别? 的全部内容, 来源链接: utcz.com/qa/398056.html