为什么这段代码会抛出 StackOverFlow 异常?

Why does this code throw StackOverFlow Exception?

我在学习 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;
        }
    }
}

那是因为你在 getter 中调用了 属性。 你可以做两件事:给你加一个field/member class:

class Test
{
    private string company;   
    public string Company
    {
        get
        {
            return company;
        }
        set
        {
            company = value;
        }
    }
}

或改为

public string Company{get; set;}