0

有人可以解释一下这种用法与性能副有什么区别吗?这些只是对两个继承类的函数调用。第一个使用继承的优势,第二个丢弃它。

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 都指向堆上对象的同一个实例。

在第二个块中,您正在创建两个不同类的两个不同实例,它们占用堆中的两个内存位置,而不是第一个。

所以第一个是内存效率然后第一个,我希望这个解释有帮助。

于 2012-08-25T06:34:03.850 回答