我创建了一个带控件的dll。当我浏览dll时,它会成功地将控件添加到工具箱中。问题是当我运行应用程序时,我收到以下错误:
An unhandled exception of type 'System.StackOverflowException' occurred in xxx.dll
调试器突出显示错误的方法在下面的函数中:
public ItemType this[int i]
{
get
{
return (ItemType)this[i];
}
set
{
this[i] = value;
}
}
因为我知道这个错误是因为递归调用而发生的,我怎么能重写上面的内容或修改它来克服这个问题。请尽快提供任何代码帮助
由于
答案 0 :(得分:2)
您应该在班级中使用内部列表。
private IList<ItemType> _list = new List<ItemType>();
public ItemType this[int i]
{
get
{
return _list[i];
}
set
{
_list[i] = value;
}
}
答案 1 :(得分:0)
我解决了这个问题,如下所示:
public ItemType this[int i]
{
get
{
return (ItemType)((IList)this)[i];
}
set
{
this[i] = value;
}
}