[英]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.