为什么将一个数组赋值为null会创建一个空数组?
问题描述:
这是那些奇怪的那些感觉就像我必须看到的东西之一,但这里是一些代码,我调试:为什么将一个数组赋值为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#中有一些奇怪的数组,我以前不知道有关吗?
答
我认为调试器可能展示你的myCode
的类型,这是在此情况下的(未分配的)byte
阵列长度为零。
哦,没关系。这全是我的错。尽管大声说出问题。原来调试器正在调用'get',它调用了Bytes属性,该属性重新创建了该数组。 – izb 2010-11-10 14:51:21
你花我的时间来测试你的错。 – 2010-11-10 14:59:51