什么是 C# 中的 属性 访问器递归?

What is Property Accessor Recursion in C#?

C# 中的 属性 访问器递归是什么?我看到有关如何解决它的文章,但想要它是什么的纯技术定义。

关于如何解决它的资源:

c# property setter body without declaring a class-level property variable

如果您将 getter 和 setter 视为方法(它们实际上是后台的方法 - C# 只是对您隐藏了它),就会变得更清楚。

  • 每当您检索 属性 的值时,您都在调用 get 方法
  • 每当你设置一个 属性 的值时,你就是在调用 set 方法

因此,如果您的 属性 看起来像这样:

public string MyProperty {
    get {
        return this.MyProperty;
    }
    set {
        this.MyProperty = value;
    }
}

真像有这两种方法:

string get_MyProperty() {
    return get_MyProperty();
}

void set_MyProperty(string value) {
    set_MyProperty(value);
}

您会注意到,这两种情况都会导致无限递归,并以 stack overflow 结束。

所以不要那样做™