C# 类型为';的未处理异常;System.StackOverflowException';

C# 类型为';的未处理异常;System.StackOverflowException';,c#,stack-overflow,C#,Stack Overflow,我已经创建了一个带有控件的dll。当我浏览dll时,它成功地将控件添加到工具箱中。问题是,当我运行应用程序时,会出现以下错误: 在xxx.dll中发生“System.StackOverflowException”类型的未处理异常 调试器用于突出显示错误的方法位于下面的函数中: public ItemType this[int i] { get { return (ItemType)this[i]; } set { this[i] = value; } } 据我所知,这个

我已经创建了一个带有控件的dll。当我浏览dll时,它成功地将控件添加到工具箱中。问题是,当我运行应用程序时,会出现以下错误:
在xxx.dll中发生“System.StackOverflowException”类型的未处理异常

调试器用于突出显示错误的方法位于下面的函数中:

public ItemType this[int i]
{
    get
{
    return (ItemType)this[i];
}
set
{
    this[i] = value;
}
}
据我所知,这个错误是由于递归调用而发生的,我如何重写或修改上面的内容来克服这个问题。请尽快提供任何代码帮助


谢谢

你应该在课堂上使用内部列表

    private IList<ItemType> _list = new List<ItemType>();
    public ItemType this[int i]
    {
        get
        {
            return _list[i];
        }
        set
        {
            _list[i] = value;
        }
    }
private IList\u list=new list();
public ItemType this[int i]
{
得到
{
返回列表[i];
}
设置
{
_列表[i]=值;
}
}

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

public ItemType this[int i] 
{ 
    get 
    { 
        return (ItemType)((IList)this)[i]; 
    } 
    set 
    { 
        this[i] = value; 
    } 
}

现在我得到的对象引用没有设置为返回的对象的实例_list[i];只需先初始化列表。当然,在示例代码中_列表总是空的。实际上itemtype是BaseItemCollection。_knownTypes=new Type[]{typeof(itemtype)};那么我应该如何更改递归函数呢