我是懒人加载的新手,我一直试图在我的程序中实现它。但是,由于某种原因,我的程序抛出了StackoverflowException。我不确定如何处理这个问题。
public new Field this[int key]
{
get
{
if (!this.Contains(key))
{
Field field = null;
// The loading code of the field + assigning the field object.
this.Add(field);
}
return this[key];
}
}
我确实认识到最后一行this[key]
会一次又一次地返回,但我不确定如何修复它。
我的班级是<int, Field>
的KeyedCollection。
答案 0 :(得分:4)
KeyedCollection
已保护Dictionary
财产。它会返回IDictionary<TKey, TItem>
所有项目。
public new Field this[int key]
{
get
{
if (!this.Contains(key))
{
Field field = null;
// The loading code of the field + assigning the field object.
this.Add(field);
}
return Dictionary[key];
}
}
答案 1 :(得分:2)
此行再次调用getter,这会导致递归调用。由于没有停止条件,它会填满堆栈的内存,因此例外:
return this[key];
尝试做类似的事情:
return this.GetItem(key);