我的课就像
public static class Duplication
{
public const int Size = 1024;
public static byte[] Bits
{ get
{
if(Bits == null)
SetBits();
return Bits;
}
private set
{
Bits = value;
}
}
.
.
.
当我运行
时,我在StackOverflowException
上获得了get
[TestMethod]
public void SizeCheck()
{
Assert.AreEqual(Duplication.Size, Duplication.Bits.Length);
}
有人可以解释为什么会这样吗?看起来像一个奇怪的例外,因为我无法想到任何正在炸毁调用堆栈的事情。
答案 0 :(得分:14)
因为您在此处调用了Bits
方法中的getter方法或get
:
if(Bits == null)
您需要明确声明一个字段才能使用您的属性:
private static byte[] _bits;
public static byte[] Bits
{ get
{
if(_bits == null)
SetBits();
return _bits;
}
private set
{
_bits = value;
}
}
另请注意,if
声明可缩短为:
return _bits ?? (_bits = SetBits());