可能性の重複:例えば
Casting: (NewType) vs. Object as NewTypeC#でキャストするときに(ObjectType)か 'ObjectType'を使うべきですか?
言って私はMyObjectTypeというクラスを持っていると私は、このタイプのイベントの送信元のパラメータを変換したいです。私は通常、単純にこれを行うことによって、それについて移動します:
MyObjectType senderAsMyType = (MyObjectType) sender;
また次のように行うことができることを私は最近気付きました
:
MyObjectType senderAsMyType = sender as MyObjectType;
を最も効率的であるどっち?私は自分のコードを一貫性のあるものにし、その中の一つの方法を使うことができます。それとも、どちらもプロとコンプを持っていますか?もしそうなら、誰かが私にそのことを知らせてもらえますか?あなたはInvalidCastException
は、アプリケーションの真の例外的な状況を表す場合はそうでない
MyObjectType senderAsMyType = (MyObjectType)sender;
を使用するすべてのInvalidCastExceptions
使用
MyObjectType senderAsMyType = sender as MyObjectType;
を避けたい場合は
おかげで再び、
誰も言及していない重要な点は、キャスティングと "as"は同じことをしないことです。たとえば、FooからBarへのユーザー定義の明示的な変換がある場合、 "(Bar)foo"は変換メソッドを呼び出しますが、 "foo as Bar"は変換しません。あなたが実際に望むことをするオプションを必ず選択してください。それを正しいものにして、それを明確にして、それをより速くすることを検討してください。 –