0

このタイプのパフォーマンスの悪用との違いを説明してくれる人がいますか。これらは、継承された 2 つのクラスに対する単純な関数呼び出しです。1 つ目は継承の利点を使用し、2 つ目は継承を破棄します。

class ClassA 
{
    public void X()
    {
        Console.WriteLine("ClassA: X()");
    }
}

class ClassB : ClassA
{
    new public void X()
    {
        Console.WriteLine("ClassB: X()");
    }
}

class CheckMemory
{
    public void testMemory ()
    {  
        //Code block 1
        ClassB bob1 = new ClassB();
        ClassA aob1 = bob1;

        aob1.X();
        bob1.X();

        //Code block 2 
        ClassB bob2 = new ClassB();
        ClassA aob2 = new ClassA();

        aob2.X();
        bob2.X();
    }

}
4

1 に答える 1

0

最初のケースでは、新しいオブジェクトを割り当てる代わりにそれを再利用しています。つまり、bob1 と aob1 の両方がヒープ上のオブジェクトの同じインスタンスを指しています。

2 番目のブロックのように、2 つの異なるクラスの 2 つの異なるインスタンスを作成している場合、それらは最初の 1 つではなく、 heap 内の 2 つのメモリ ロケーションを占有します。

したがって、最初のものはメモリ効率が高く、次に最初のものです。この説明が役立つことを願っています。

于 2012-08-25T06:34:03.850 に答える