【问题标题】:C#.Net Casting and Instantiating Memory AllocationC#.Net 强制转换和实例化内存分配
【发布时间】:2012-08-25 06:28:42
【问题描述】:

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

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

}

【问题讨论】:

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

标签: c# asp.net .net memory casting


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多