最佳答案
在开发博客、在线代码示例和(最近)甚至是一本书中,我经常遇到这样的代码:
var y = x as T;
y.SomeMethod();
或者,更糟糕的是:
(x as T).SomeMethod();
这对我来说没有意义。如果你确定x
的类型是T
,你应该使用直接类型转换:(T)x
。如果你不确定,你可以使用as
,但在执行某些操作之前需要检查null
。上述代码所做的就是将(有用的)InvalidCastException
转换为(无用的)NullReferenceException
。
我是唯一一个谁认为这是一个公然滥用as
关键字?还是我错过了一些明显的东西,而上面的模式实际上是有意义的?