【发布时间】:2020-07-25 22:27:47
【问题描述】:
我在学习 C# 中的 getter 和 setter 时遇到了这段代码。我了解 c# 上下文有什么问题。它没有编译时错误,但会引发运行时异常。谁能解释导致调用堆栈溢出的原因?
using System;
class Program
{
static void Main(string[] args)
{
Test test = new Test();
Console.WriteLine(test.Company);
}
}
class Test
{
public string Company
{
get
{
return Company;
}
set
{
Company = value;
}
}
}
【问题讨论】:
-
因为
Company的getter 返回Company,它返回Company,它返回Company,它返回Company...直到堆栈溢出。 -
您应该查看您的堆栈跟踪,并且您会立即发现您缺少一个支持字段,并且您正在为 Company 属性分配一个值,该属性将值分配给分配值的自身给自己分配价值给自己......无休止
-
StackOverflow 今天充满了堆栈溢出stackoverflow.com/questions/63084798/… - 我想知道这些是否因为彼此重复而关闭会导致 StackOverflowoverflow.. :)
-
@legacycode 我认为它是 getter 而不是 setter,但我明白你的意思。关于堆栈跟踪的好点,你应该把它写成一个答案 - 这将是一个很好的教育点
-
这能回答你的问题吗? StackOverflow Exception from get and set
标签: c# exception stack-overflow getter-setter