開発ブログ、オンラインコードの例、そして(最近では)本でも、次のようなコードについてつまずきます。
var y = x as T;
y.SomeMethod();
さらに悪いことに:
(x as T).SomeMethod();
それは私には意味がありません。xタイプがであることが確実な場合はT、ダイレクトキャストを使用する必要があります(T)x。不明な場合は使用できますasがnull、操作を実行する前に確認する必要があります。上記のコードが行うことは、(有用な)InvalidCastExceptionを(役に立たない)に変えることだけですNullReferenceException。
これがasキーワードの露骨な乱用だと思うのは私だけですか?それとも私は明白なものを見逃していて、上記のパターンが実際に理にかなっていますか?
((T)x).SomeMethod()いいですよね。;)(冗談です、あなたはもちろん正しいです!)
(f as T).SomeMethod();)