为什么将数组赋值为null会创建一个空数组?

时间:2010-11-10 14:46:30

标签: c# arrays null debugging

这是一种奇怪的感觉,我觉得我必须看到的东西,但这是我正在调试的一些代码:

    private byte[] myCode = null;

    ...

    public bool Tampered
    {
        get
        {
            return Bytes == null;
        }

        set
        {
            if (value)
            {
                if (Bytes != null)
                {
                    ProcessBytes();         /* BREAKPOINT HERE */
                    myCode = null;
                }
            }
        }
    }

我运行我的代码,执行someObject.Tampered = true;并在断点处中断。此时,调试器显示mycode == bytes[3]。一切都很好。我跨过ProcessBytes。一切都还不错。

然后,我跳过myCode = null;,调试器显示myCode == bytes[0]

发生了什么事?我是否只是从根本上打破了一些东西? myCode不是属性,因此它不应该做任何奇怪的事情。在C#中是否有一些我以前不知道的数组的怪癖?

1 个答案:

答案 0 :(得分:1)

我认为调试器可能会显示myCode的类型,在这种情况下是一个长度为零的(未分配的)byte数组。