4

与えられた2つのタイプ

class A { public virtual void Hello() { Console.WriteLine("A"); } }
class B : A { public override void Hello() { Console.WriteLine("B"); } }

および「B」のインスタンス B b = new B();

スルーのHello()方法にアクセスできますか?(AをBのプロパティとして公開することは考えられますが、別の方法があるかどうかはわかりません)Ab

私はこれがc++で可能であることを知っていましたが、c#で頭を悩ませていました。

PS:「なぜこれが欲しいの?」についての会話はしないでください。または「これは悪いデザインです」など。

4

3 に答える 3

9

外からではありません。

内部から、インスタンスはを介してそれを呼び出すことができるbase.Hello()ので、次を追加できます。

public void Foo() { base.Hello(); }   
于 2012-09-04T20:13:10.927 に答える
1

C#では不可能です。ごめん。

于 2012-09-04T20:14:04.713 に答える
1

シャドウイングを試すことができます:

class A { public virtual void Hello() { Console.WriteLine("A"); } }
class B : A { public new void Hello() { Console.WriteLine("B"); } }

次に、次のことができます。

        A b = new B();
        b.Hello(); //prints A
       (B)b).Hello(); //prints B

       B b1 = new B();
       b1.Hello(); //prints B
于 2012-09-04T20:28:26.833 に答える