我有以下代码:
public class Employee
{
public string Name { get; set; }
}
public class InstanceManager
{
public static Employee employee;
public static Employee GetEmployee()
{
if(employee == null)
{
employee = new Employee {Name = "Tom"};
}
return employee;
}
}
public class TestClass
{
public void Test()
{
Employee emp = InstanceManager.GetEmployee();
var name = emp.Name;
emp = null;
var name2 = InstanceManager.GetEmployee().Name;
}
}
在该Test()
方法中,局部变量emp
是引用InstanceManager.Employee
对象。然后,我设置emp
为null
。
InstanceManager.Employee
到null
?employee
静态变量InstanceManager
不是null
!为什么?(我期望GetEmployee()
在之后调用此方法时,该方法将创建并返回新的Employee对象emp = null;
。)
在此行之后:
Employee emp = InstanceManager.GetEmployee();
您的情况如下所示:
当您这样做时:
emp = null;
之后,您无需更改static变量employee
。您只是在设置emp
要引用另一个(在这种情况下null
)“位置”。更准确地说-您将其设置为不指向任何内容。静态对象employee
一直指向它所在的位置。该行的效果可以如下所示:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句