This question already has answers here:
Overloading getter and setter causes a stack overflow in C# [duplicate]
(4个答案)
1年前关闭。
这就是我所拥有的,因为我想测试并尝试C#的getters/setter方法。但是,我在“set {testCount = value + 13}”处未处理StackOverFlowException。而且我无法逐步解决,因为我从Visual Studio中收到“调试器无法继续运行该进程。进程已终止”消息。有什么想法我做错了吗?
编辑:今天,我了解到我做了一个非常愚蠢的derp。考虑到众多即时响应。现在我知道了。
请注意,与字段名称
(4个答案)
1年前关闭。
class Program
{
static void Main(string[] args)
{
something s = new something();
s.DoIt(10);
Console.Write(s.testCount);
}
}
class something
{
public int testCount
{
get { return testCount; }
set { testCount = value + 13; }
}
public void DoIt(int val)
{
testCount = val;
}
}
这就是我所拥有的,因为我想测试并尝试C#的getters/setter方法。但是,我在“set {testCount = value + 13}”处未处理StackOverFlowException。而且我无法逐步解决,因为我从Visual Studio中收到“调试器无法继续运行该进程。进程已终止”消息。有什么想法我做错了吗?
编辑:今天,我了解到我做了一个非常愚蠢的derp。考虑到众多即时响应。现在我知道了。
最佳答案
在引用属性中的属性时,您具有无限递归。
您应该为此使用备用字段:
private int testCount;
public int TestCount
{
get { return testCount; }
set { testCount = value + 13; }
}
请注意,与字段名称
TestCount
(小写的testCount
)相反,属性名称t
(也符合C#命名标准)。关于c# - getter/setter C#中的无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16694098/
10-13 08:27