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; } 
}

(免责声明:我绝对讨厌强调私有变量,但这证明了答案同时让我感到有点恶心)