当存储该引用的局部变量设置为null时,为什么静态变量没有设置为null?

学习者

我有以下代码:

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对象。然后,我设置empnull

  • 难道这不是意味着,我设置InstanceManager.Employeenull
  • 如果我调试此代码,则会发现的employee静态变量InstanceManager不是null为什么?

(我期望GetEmployee()在之后调用此方法时,该方法将创建并返回新的Employee对象emp = null;。)

BartoszKP

在此行之后:

Employee emp = InstanceManager.GetEmployee();

您的情况如下所示:

在此处输入图片说明

当您这样做时:

emp = null;

之后,您无需更改static变量employee您只是在设置emp要引用另一个(在这种情况下null)“位置”。更准确地说-您将其设置为不指向任何内容。静态对象employee一直指向它所在的位置。该行的效果可以如下所示:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

静态变量设置为null,然后使用if语句检查该变量是否为null

来自分类Dev

为什么我的局部变量为null?

来自分类Dev

@Value 将静态变量设置为 null

来自分类Dev

为什么不将静态变量设置为nil会破坏静态变量的目的?

来自分类Dev

在方法中枚举静态变量并将其设置为null时会发生什么

来自分类Dev

将其设置为null后检查静态变量是否为Null

来自分类Java

为什么Java中没有局部静态变量?

来自分类Dev

Linux:为局部变量设置命令

来自分类Dev

使用后是否需要将局部变量设置为NULL

来自分类Dev

如果没有值,则将变量设置为null

来自分类Dev

为什么我的布尔变量没有设置为 True?

来自分类Dev

将静态变量设置为ssis变量-错误

来自分类Dev

为什么局部变量实例化失败,而静态变量实例化失败?

来自分类Dev

将不可为空的值设置为null时,为什么TypeScript没有警告?

来自分类Dev

将日期和时间设置为局部变量-Android

来自分类Dev

如何将heredoc输出设置为局部变量

来自分类Dev

返回局部变量而不将它们设置为全局

来自分类Dev

为什么必须为存储在堆中的函数的局部变量调用delete?

来自分类Dev

在JUnitParams方法中设置字段变量后,为什么字段变量为null?

来自分类Dev

为什么在`while`循环中用`read variable`设置变量时是全局变量,而当用`while read variable`设置变量时为什么是局部变量?

来自分类Java

将变量设置为null是否仅清除引用?

来自分类Dev

为什么我的函数局部变量之间在堆栈中没有存储空间?

来自分类Dev

将值设置为静态变量将返回错误

来自分类Dev

检查变量是否为true,false,如果没有则设置为null

来自分类Dev

为什么我的局部变量没有被覆盖?

来自分类Dev

函数在C中返回局部变量的地址时为NULL行为

来自分类Java

为什么在引用静态变量时包括类名?

来自分类Dev

SQL Server CLR静态变量设置回null

来自分类Dev

静态变量在main方法之外显示为null

Related 相关文章

  1. 1

    静态变量设置为null,然后使用if语句检查该变量是否为null

  2. 2

    为什么我的局部变量为null?

  3. 3

    @Value 将静态变量设置为 null

  4. 4

    为什么不将静态变量设置为nil会破坏静态变量的目的?

  5. 5

    在方法中枚举静态变量并将其设置为null时会发生什么

  6. 6

    将其设置为null后检查静态变量是否为Null

  7. 7

    为什么Java中没有局部静态变量?

  8. 8

    Linux:为局部变量设置命令

  9. 9

    使用后是否需要将局部变量设置为NULL

  10. 10

    如果没有值,则将变量设置为null

  11. 11

    为什么我的布尔变量没有设置为 True?

  12. 12

    将静态变量设置为ssis变量-错误

  13. 13

    为什么局部变量实例化失败,而静态变量实例化失败?

  14. 14

    将不可为空的值设置为null时,为什么TypeScript没有警告?

  15. 15

    将日期和时间设置为局部变量-Android

  16. 16

    如何将heredoc输出设置为局部变量

  17. 17

    返回局部变量而不将它们设置为全局

  18. 18

    为什么必须为存储在堆中的函数的局部变量调用delete?

  19. 19

    在JUnitParams方法中设置字段变量后,为什么字段变量为null?

  20. 20

    为什么在`while`循环中用`read variable`设置变量时是全局变量,而当用`while read variable`设置变量时为什么是局部变量?

  21. 21

    将变量设置为null是否仅清除引用?

  22. 22

    为什么我的函数局部变量之间在堆栈中没有存储空间?

  23. 23

    将值设置为静态变量将返回错误

  24. 24

    检查变量是否为true,false,如果没有则设置为null

  25. 25

    为什么我的局部变量没有被覆盖?

  26. 26

    函数在C中返回局部变量的地址时为NULL行为

  27. 27

    为什么在引用静态变量时包括类名?

  28. 28

    SQL Server CLR静态变量设置回null

  29. 29

    静态变量在main方法之外显示为null

热门标签

归档