为了账号安全,请及时绑定邮箱和手机立即绑定

即使没有空检查,使用“ as”代替强制转换是否有意义?

即使没有空检查,使用“ as”代替强制转换是否有意义?

C#
动漫人物 2019-10-15 09:09:44
在开发博客,在线代码示例,以及(最近)甚至是一本书中,我一直对类似的代码code之以鼻:var y = x as T;y.SomeMethod();或更糟糕的是:(x as T).SomeMethod();这对我来说没有意义。如果您确定x类型为T,则应使用直接强制转换:(T)x。如果不确定,可以使用as但需要检查null后再执行某些操作。上面的代码所做的就是将(有用的)InvalidCastException变成(没用的)NullReferenceException。我是唯一认为这是公然滥用as关键字的人吗?还是我错过了明显的事情,而上述模式确实有意义?
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

我经常看到对该误导性文章的引用是“按原样”比强制转换更快的证据。


本文最明显的误导性方面之一是图形,该图形未指示正在测量的内容:我怀疑它正在测量失败的强制类型转换(其中“ as”显然要快得多,因为不会引发异常)。


如果花时间进行测量,那么您将发现,如预期的那样,强制转换成功后,强制转换的速度比“ as” 更快。


我怀疑这可能是“崇拜”使用as关键字而不是强制转换的原因之一。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 362 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信