2015-07-10 28 views
-5

当我调用两次相同的方法并且在实例化同一个对象时会发生什么。假设:当我调用两次相同的方法时发生了什么

void doSomethingMethod() 
{ 
myClass Object1 = new myClass(); 
... 
} 

Main() 
{ 
doSomethingMethod(); //<-- first call to the method 
. 
. 
. 
doSomethingMethod(); //<-- second call to the method 
} 

当我第二次调用方法时,类对象会发生什么?它是否被新对象取代?将现有对象中的属性复制到新对象中吗?

+2

你的问题没有多大意义。你的'class'变量(非法C#,因为这是一个保留字)引用一个新的对象,每次调用该方法。在第二次调用该方法时,很可能已经过去了,但在任何情况下,除非您将该引用分配给一个更加永久的变量,否则在此之后它不能被任何代码访问。如果没有人可以访问,它将如何取代?你甚至尝试调试你感兴趣的场景吗? –

+0

你是如何让代码工作将变量命名为'class'的?您需要使用'@class'。如果你想在第二个实例化中替换'@class'对象,则使用全局声明(把'myClass class'放在全局范围内)。在你的情况下,它只能在doSomethingMethod中访问,并且一旦这个方法产生了控制,'@class'变量内存引用将只被垃圾回收器清理。 – ATP

回答

3

由于myClass class变量是当地doSomethingMethod,它只要doSomethingMethod完成其工作超出范围。此时,您分配给该变量的myClass实例可以用于垃圾回收,除非您在其他变量或集合中存储了引用。

无论您调用方法的次数如何,每次都会发生相同的顺序:在开始时创建一个新的myClass实例,然后在方法结束时变为符合垃圾回收条件。

相关问题