此代码给出了System.StackOverflow
运行时错误:
class blue
{
public pawn[] p
{
get { return p; }
set /*it points to this curly bracket*/{ p = value; }
}
public blue()
{
p = new pawn[8];
}
}
答案 0 :(得分:5)
当然可以!您在p
的设置器中设置值p
。这会导致方法调用的无限递归,这会导致溢出可用的"堆栈"执行方法的空间。
看起来你只想要一个汽车财产:
public pawn[] p { get; set; }
或者,如果您确实需要明确的支持字段,请以不同方式命名
private pawn[] _p;
public pawn[] p
{
get { return _p; }
set { _p = value; }
}
(免责声明:我绝对讨厌强调私有变量,但这证明了答案,同时让我感到有点恶心)