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