です。私はすでにこの答えを見つけたので、これはこのサイトには適切だと思うので、質問よりもクイズです。キャスト時に例外がスローされることがありますが、逆参照に続く「as」は
このC#コードは問題なく動作します:
WidgetRef = widget as IWidget;
WidgetRef.Init();
しかし、私はそれを変更しようとした場合:私は例外「のiWidgetにキャストすることはできません」を取得いくつかの状況で
WidgetRef = (IWidget)widget;
WidgetRef.Init();
。
最初は、2番目の例でキャストできない場合、1番目の例でnull例外がスローされるはずです。しかし、私はそれが必ずしもそうでないことを発見しました:)
これはどのように可能ですか?
[単純なキャストよりもC#の "as"キーワードに重複がありますか?](http://stackoverflow.com/questions/771629/is-there-more-to-the-c-as-keyword -than-simple-casting) – CodeNaked
拡張メソッドである 'Init()'は1つの可能性があります。 – dlev
他の質問はダブじゃないと思います。 WidgetクラスとIWidgetインターフェイスの詳細については、それらの実装方法などの情報を提供する必要があります。 「as演算子は、キャスト式を使用して実行する必要があるユーザー定義の変換などの他の変換は実行できません」というキーワードに注意してください。" – CodeNaked