具有两个类的文件中的StackOverFlowException

时间:2018-10-28 11:18:07

标签: c#

以下代码生成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);

        }
    }
}

我试图删除学习{...}的命名空间,但没有任何改变。

2 个答案:

答案 0 :(得分:5)

您的财产正在归还自己:

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

相反,它应该返回字段name(区分大小写):

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

答案 1 :(得分:4)

您正在对属性Name进行递归调用,而将字段定位为name

public String Name
{
    get => name;

这是我为什么要在字段名称下划线_name的完美原因,另一个是这样,因此我不必在方法或构造函数中使用this.name