C# 类型为';的未处理异常;System.StackOverflowException';
我已经创建了一个带有控件的dll。当我浏览dll时,它成功地将控件添加到工具箱中。问题是,当我运行应用程序时,会出现以下错误: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; } } 据我所知,这个
在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)};那么我应该如何更改递归函数呢