0

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

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

谢谢

4

2 回答 2

2

您应该在您的班级中使用内部列表。

    private IList<ItemType> _list = new List<ItemType>();
    public ItemType this[int i]
    {
        get
        {
            return _list[i];
        }
        set
        {
            _list[i] = value;
        }
    }
于 2012-12-07T11:48:36.963 回答
0

我解决了这个问题,如下:

public ItemType this[int i] 
{ 
    get 
    { 
        return (ItemType)((IList)this)[i]; 
    } 
    set 
    { 
        this[i] = value; 
    } 
}
于 2013-01-21T17:11:55.353 回答