C# 中的强制转换和使用“as”有什么区别?

2023-11-21

如果有差异,那么执行以下转换的两种方法有什么区别?

在这种情况下e is a GridViewRowEventArgs object.

GridView gv = (GridView)e.Row.FindControl("gv"); //first way

GridView gv2 = e.Row.FindControl("gv") as GridView; //second way

差异是:

  • 如果强制转换失败,则会抛出InvalidCastException.
  • If the as运算符失败,它只返回一个空引用。
  • 你不能使用as具有不可为 null 的值类型(例如,您不能执行“o as int").
  • 强制转换运算符也用于拆箱。 (as可用于取消装箱为可为空值类型。)
  • 强制转换运算符还可以执行用户定义的转换。

编辑:我已经写在别处关于什么时候我觉得适合使用哪个运算符。这可能值得一读...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的强制转换和使用“as”有什么区别? 的相关文章

随机推荐