我正在使用 C#,并且我有一本名为intervalRecordsPerObject
type的字典Dictionary<string, List<TimeInterval>>
。我需要遍历字典。问题是:每次我遍历字典时,KeyValuePairs
可能会添加更多内容。随着字典的增长,我也需要不断迭代新条目。
首先,我这样做了:一个简单的foreach
循环给了我一个InvalidOperationException
说法
Collection was modified; enumeration operation may not execute.
ToList()
我知道如果它随着 C# 使用beforeforeach
循环转换它而不断变化,我不能以这种方式迭代 Dictionary 。
for
我知道我可以将键复制到临时数组,使用简单循环遍历字典,Count
并且每当向字典添加新条目时,也将相应的键添加到数组中。现在,问题是一个简单的数组不能动态增长,我事先不知道所需的大小可能是多少。
为了继续前进,我想我会这样做:
List<string> keyList = new List<string>(intervalRecordsPerObject.Count);
intervalRecordsPerObject.Keys.CopyTo(keyList.ToArray(), 0);
我也不能这样做。keyList
目前是空的,因此keyList.toArray()
返回一个长度为 0 的数组,这给了我一个ArgumentException
说法
Destination array is not long enough to copy all the items in the collection. Check array index and length.
我被困住了!知道我还能尝试什么吗?谢谢你的帮助。
加法1:
字典存储特定对象存在的时间间隔。键是对象的 ID。新条目可能会在每次迭代中添加(最坏的情况),或者甚至可能不会添加一次。是否添加条目由几个条件决定(对象是否与其他一些间隔重叠等)。这会触发 ID 和相应间隔列表的更改,然后将其作为新条目添加到字典中。