C#getter setter默认值
如何设置setter-getter的默认值?我想在设置setter时执行一些操作C#getter setter默认值,c#,unity3d,getter-setter,C#,Unity3d,Getter Setter,如何设置setter-getter的默认值?我想在设置setter时执行一些操作 public bool spin { get { return this.spin; } set { if (value == false) this.spinBack = true; this.spin = value; } } private bool spinBack; 我在Unity3D上尝试了这一点,但在尝试这样做时出现了此错误 StackOver
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,
或部分
StackOverflowException
是由于您的this.spin=值引起的代码>递归设置的行spin
改为使用支持字段:
public bool Spin
{
get { return _spin; }
set {
if (value == false) this.spinBack = true;
_spin = value;
}
}
private bool _spin;
private bool spinBack;
getter和setter递归地调用它们自己。我尝试将getter body留空以便它可以调用自己,但我得到了以下错误:“'spin.get':并非所有代码路径都返回一个值”这样不行。一旦你实现了它们中的任何一个,C#就不会生成一个支持字段,你必须同时实现这两个字段(和一个支持字段)。所以支持字段是必需的。我正在考虑使用一个支持字段。我想看看是否可以在自己身上使用setter和getter。@user1105430可以,但正如您所看到的,它将递归并导致上述错误。有什么特别的原因不能使用您自己的支持字段吗?回滚看起来没用。如果值为false,则将其设置为true;如果值为true,则将保持true。因此,只有在真正的值出现之前,它才是假的。奇怪,但为什么不…所以你可以把它拿下来检查一下!Spin maybe.Yeh,回滚
的功能不清楚,所以我们只是保持原样。尽管如此,这是一个正确的观点。:)我没有特别的理由不能使用支持字段。我只是想知道C#是否允许你在没有一个的情况下这样做。这只是为了更好地理解接球手和二传手。