类型为“System.StackOverflowException”的未处理异常

时间:2012-12-07 11:46:34

标签: c# stack-overflow

我创建了一个带控件的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;
}
}

因为我知道这个错误是因为递归调用而发生的,我怎么能重写上面的内容或修改它来克服这个问题。请尽快提供任何代码帮助

由于

2 个答案:

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