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