在开发博客,在线代码示例,以及(最近)甚至是一本书中,我一直对类似的代码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关键字而不是强制转换的原因之一。
- 3 回答
- 0 关注
- 362 浏览
添加回答
举报
0/150
提交
取消