C# 包含两个类的文件中的StackOverFlowException

C# 包含两个类的文件中的StackOverFlowException,c#,C#,下面的代码生成StackOverFlowException。问题是为什么?在我看来这是合法的 using System; namespace learning { public class TestClass { private String name; public String Name { get => Name; set => name = value;

下面的代码生成StackOverFlowException。问题是为什么?在我看来这是合法的

using System;

namespace learning
{

    public class TestClass
    {
        private String name;

        public String Name
        {
            get => Name;
            set => name = value;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {

            TestClass e = new TestClass();
            Console.WriteLine(e.Name);

        }
    }
}

我尝试删除名称空间学习{…},但它没有改变任何内容。

您的属性正在自行返回:

public String Name
{
    get => Name;
    set => name = value;
}
相反,它应该返回字段
name
(区分大小写):


您的财产正在自行归还:

public String Name
{
    get => Name;
    set => name = value;
}
相反,它应该返回字段
name
(区分大小写):


您正在对属性
Name
进行递归调用,以字段为目标,即
Name

public String Name
{
    get => name;

这就是为什么我喜欢在字段名下划下划线的一个完美原因,另一个原因是,我不必在方法或构造函数中使用
This.name
。如果要递归调用属性
name
,请改为以字段为目标,即
name

public String Name
{
    get => name;
这就是为什么我喜欢在字段名
\u name
下面加下划线的完美原因,另一个原因是这样我就不必在方法或构造函数中使用
This.name