你好,我对 C# 很陌生,所以我不完全确定我想要做的事情是可能的,
我基本上是在尝试在列表上设置 get 属性,当加载此列表时,它将从另一个列表中读取信息,方法是:
如果父列表为空,则创建一个新列表,否则遍历父列表元素并相应地处理每个
然而,get 方法导致堆栈溢出,通过调试器运行它似乎一遍又一遍地运行,直到堆栈被炸毁,即使它已经命中并处理了我的 return 语句
这是代码:
public ICollection<History> History
{
get {
if (HistoryKeyCount == 0)//HistoryKeyCount = Count of Parent List
{
History = new List<Histories>();
}
else
{
History = new List<Histories>();//Created again because after each read object is dropped from memory
foreach (HistoryKey x in ParentList)
{
if (x.Key == null)
{
// Do nothing
}
else
History.Add(ObjectFinder.FindObject<ParentList>(x.Key));
}
}
return History;
}
set {
//Not implemented yet
}
}
发生的情况是它进入 get 方法,到达 if 语句,创建新对象,返回它然后一遍又一遍,直到发生 stackoverflow 异常
问题不在于 ObjectFinder 类或创建新方法,错误发生时甚至没有达到这些方法。
我最初认为它是在 if 语句的每个实例之后创建的一个新对象,但是在添加了一个标志之后,以便只有在问题仍然存在时才会创建它。
有没有人遇到过这个问题?因为它把我难住了!!
----编辑---我忘了提到我正在使用.NET的裸对象框架,这很可能是问题的根源