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; } }