2010-11-10 718 views
4

这是那些奇怪的那些感觉就像我必须看到的东西之一,但这里是一些代码,我调试:为什么将一个数组赋值为null会创建一个空数组?

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#中有一些奇怪的数组,我以前不知道有关吗?

+2

哦,没关系。这全是我的错。尽管大声说出问题。原来调试器正在调用'get',它调用了Bytes属性,该属性重新创建了该数组。 – izb 2010-11-10 14:51:21

+2

你花我的时间来测试你的错。 – 2010-11-10 14:59:51

回答

1

我认为调试器可能展示你的myCode的类型,这是在此情况下的(未分配的)byte阵列长度为零。

相关问题