以下代码生成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);
}
}
}
我试图删除学习{...}的命名空间,但没有任何改变。
答案 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