所以我正在为我的程序制作一个自定义控件。我去添加一个字符串属性但是当我试图改变它时C#崩溃了。这是我正在使用的代码
private string series = "None";
[Description("Tells What the Series is")]
[Category("Element")]
[DefaultValue("None")]
public string Series
{
get { return series; }
set { Series = value; }
}
答案 0 :(得分:9)
您以递归方式设置它。
private string series = "None";
[Description("Tells What the Series is")]
[Category("Element")]
[DefaultValue("None")]
public string Series
{
get { return series; }
set { series = value; } // notice series not Series
}
我建议使用自动属性吗?
[Description("Tells What the Series is")]
[Category("Element")]
[DefaultValue("None")]
public string Series
{
get; set;
}
您必须在构造函数中初始化值。
答案 1 :(得分:2)
您正尝试在属性的setter中递归设置属性Series
。这将导致StackOverflowException
。
set { series = value; }
是你想要的。
答案 2 :(得分:2)
你的应用程序中有一个无限循环,因此我猜它崩溃了一个stackoverflow错误。
set { Series = value; }
应该是
set { series = value; }
答案 3 :(得分:2)
你试图在“set”中设置属性值本身,从而创建一个无限递归。
更改
set { Series = value; }
到
set { series = value; }
(小写s)。