簡體   English   中英

C#.Net強制轉換和實例化內存分配

[英]C#.Net Casting and Instantiating Memory Allocation

有人可以解釋一下這種類型的性能副工具有什么區別嗎? 這些只是對兩個繼承的類的函數調用。 第一個利用繼承的優勢,第二個放棄繼承。

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都指向堆上一個對象的同一實例。

與在第二個塊中一樣,您正在創建兩個不同類的兩個不同實例,它們在堆中占據了兩個內存位置,而不是第一個。

因此,第一個是內存高效的,然后第一個是內存高效的,我希望這個解釋有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM