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都指向堆上对象的同一实例 在第二个块中,您正在创建两个不同类的两个不同实例,它们占用堆中的两个内存位置,而不是第一个
所以第一个是内存有效的,然后是第一个,我希望这个解释有帮助。问题是什么?如果输出不是您期望的,则显示输出并显示您期望的内容。