什么是 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 结束。
所以不要那样做™
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 结束。
所以不要那样做™