C#中的StackoverFlowException
我正在编写一个代码,用于在C#中设置属性并获得exception。
public class person { public string name { set { name = value; } get { return name; } } public static void Main() { person p = new person(); p.name = "Bilal"; Console.WriteLine(p.name); } }
你的属性中有无限递归 – 你的setter会调用自己直到你得到一个堆栈溢出:
set { name = value; }
而是使用自动属性 (如果您不需要直接访问支持字段并且不在getter / setter中执行任何其他操作,则建议使用):
public string name {get;set;}
或使用支持字段:
private string _name; public string name { set { _name = value; } get { return _name; } }
您的媒体资源名称和字段名称相同(“名称”)。 将属性名称大写。
或者只是切换到自动道具:
public class Person { public string Name { get; set; } }
只是用
private string _name; public string Name { set { _name = value; } get { return _name; } }
避免这个问题,并清楚发生了什么。
你需要这样的东西:
string name; public string Name { set { name = value; } get { return name; } }