setter 上的 StackOverflow 运行时错误
StackOverflow runtime error on setter
这段代码给我一个 System.Whosebug
运行时错误:
class blue
{
public pawn[] p
{
get { return p; }
set /*it points to this curly bracket*/{ p = value; }
}
public blue()
{
p = new pawn[8];
}
}
当然可以!您正在 p
的 setter 中设置值 p
。这会导致方法调用的无限递归,从而导致溢出可用的 "stack" space 来执行方法。
看来你只想要一辆汽车 属性:
public pawn[] p { get; set; }
或者,如果您真的想要一个明确的支持字段,则以不同的方式命名
private pawn[] _p;
public pawn[] p
{
get { return _p; }
set { _p = value; }
}
(免责声明:我绝对讨厌强调私有变量,但这证明了答案同时让我感到有点恶心)
这段代码给我一个 System.Whosebug
运行时错误:
class blue
{
public pawn[] p
{
get { return p; }
set /*it points to this curly bracket*/{ p = value; }
}
public blue()
{
p = new pawn[8];
}
}
当然可以!您正在 p
的 setter 中设置值 p
。这会导致方法调用的无限递归,从而导致溢出可用的 "stack" space 来执行方法。
看来你只想要一辆汽车 属性:
public pawn[] p { get; set; }
或者,如果您真的想要一个明确的支持字段,则以不同的方式命名
private pawn[] _p;
public pawn[] p
{
get { return _p; }
set { _p = value; }
}
(免责声明:我绝对讨厌强调私有变量,但这证明了答案同时让我感到有点恶心)