这是一个奇怪的问题,让我觉得自己可能看错了,但是这里有一些我正在调试的代码:
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#中的数组是否存在我之前不知道的一些怪癖?