C#.Net强制转换和实例化内存分配

C#.Net强制转换和实例化内存分配,c#,asp.net,.net,memory,casting,C#,Asp.net,.net,Memory,Casting,有没有人能解释一下,这类用法作为性能工具有什么不同。这些只是对两个继承类的函数调用。第一个使用继承的优点,第二个放弃它 class ClassA { public void X() { Console.WriteLine("ClassA: X()"); } } class ClassB : ClassA { new public void X() { Console.WriteLine("ClassB: X()");

有没有人能解释一下,这类用法作为性能工具有什么不同。这些只是对两个继承类的函数调用。第一个使用继承的优点,第二个放弃它

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();
    }

}

在第一种情况下,我们没有分配新对象,而是重用它,即bob1和aob1都指向堆上对象的同一实例

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


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

问题是什么?如果输出不是您期望的,则显示输出并显示您期望的内容。