-4

型キャストに関する基本的な質問があります。

class A { }
class B : A { }

B b = new B();
A a = (A)b;

上記のコードでは、型キャストが発生するかどうか?

    interface IA
    {
        void process();
    }

    class B : IA
    {
        #region IA Members

        void IA.process()
        {
            throw new NotImplementedException();
        }

        #endregion
        public void process() { }
    }

    B b = new B();
    b.process();
    ((IA)b).process();

上記のコードでは、型キャストが発生するかどうか?

4

2 に答える 2

1

どちらの場合も、(A)bのような明示的なキャストを使用しています。したがって、型キャストはどちらの場合も発生します。明示的なキャストが削除されると、最初のケースでは暗黙的なキャストが発生し、2番目のケースではb.process()と同じであるためキャストがありません。

于 2011-12-28T11:55:41.463 に答える
0

クラスAをクラスBにキャストするクラスコンバーターを作成することをお勧めします。

于 2011-12-28T11:51:25.067 に答える