開発ブログ、オンラインコードの例、そして(最近では)本でも、次のようなコードについてつまずきます。
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()
;)