我正在编写一个代码,用于在C#中设置属性并获得异常。
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);
}
}
答案 0 :(得分:14)
你的属性中有无限递归 - 你的setter会调用自己直到你得到堆栈溢出:
set
{
name = value;
}
而是使用auto-property(如果您不需要直接访问支持字段并且不在getter / setter中执行任何其他操作,则建议使用):
public string name {get;set;}
或使用支持字段:
private string _name;
public string name
{
set
{
_name = value;
}
get
{
return _name;
}
}
答案 1 :(得分:5)
您的媒体资源名称和字段名称相同(“名称”)。将属性名称大写。
或者只是切换到自动道具:
public class Person
{
public string Name { get; set; }
}
答案 2 :(得分:2)
只需使用
private string _name;
public string Name
{
set
{
_name = value;
}
get
{
return _name;
}
}
避免这个问题,并清楚发生了什么。
答案 3 :(得分:1)
你需要这样的东西:
string name;
public string Name
{
set
{
name = value;
}
get
{
return name;
}
}