В блогах разработки, примерах онлайн-кода и (недавно) даже книге я постоянно спотыкаюсь о коде:
var y = x as T;
y.SomeMethod();
или, что еще хуже:
(x as T).SomeMethod();
Это не имеет смысла для меня. Если вы уверены, что x
имеет тип T
, вы должны использовать прямой листинг: (T)x
. Если вы не уверены, вы можете использовать as
, но перед тем, как выполнить некоторую операцию, вам нужно проверить null
. Все, что делает вышеприведенный код, это превратить (полезный) InvalidCastException
в (бесполезный) NullReferenceException
.
Я единственный, кто считает, что это вопиющее злоупотребление ключевыми словами as
? Или я пропустил что-то очевидное, и приведенная выше картина действительно имеет смысл?