【发布时间】:2018-05-13 02:47:21
【问题描述】:
如何设置 setter getter 的默认值?我想在设置setter的同时做一些操作。
public bool spin {
get { return this.spin; }
set {
if (value == false) this.spinBack = true;
this.spin = value;
}
}
private bool spinBack;
我在 Unity3D 上尝试过,但尝试这样做时出现此错误。
StackOverflowException:请求的操作导致堆栈 溢出。
我尝试只设置 getter 并将 getter 保留为默认值,就像这样
public bool spin {
get;
set {
if (value == false) this.spinBack = true;
this.spin = value;
}
}
private bool spinBack;
但我收到此错误
'spin.get' 必须有一个主体,因为它没有被标记为 abstract、extern、 或部分
【问题讨论】:
-
getter 和 setter 递归调用自己。
-
我尝试将 getter 主体留空,以便它可以调用自身,但出现此错误:“'spin.get': not all code paths return a value”
-
这样不行。一旦你实现了它们中的任何一个,C# 就不会生成一个支持字段,你必须同时实现这两个(和一个支持字段)。
-
所以支持字段是必需的。
标签: c# unity3d getter-setter