SortedList如何清除其键?

时间:2017-06-05 20:35:31

标签: c# sortedlist

我有一个SortedList偶尔会将其键重新分配给不同的值,我不明白这是如何发生的。

我知道键和值不同步,因为值是包含应该等于键的属性的对象。

初始化就像:

class MyObject
{
  int IndexProperty { get; set; }

  // ... other properties
}

SortedList<int, SortableObject> mySortedList =
  new SortedList<int, MyObject>(sourceList.ToDictionary(x => x.IndexProperty , x => x)));

// sourceList is a pre-existing List<MyObject>

完成后,mySortedList如下所示:

{
  2, {IndexProperty = 2}
  7, {IndexProperty = 7}
  22, {IndexProperty = 22}
  45, {IndexProperty = 45}
}

初始化后对mySortedList的唯一操作是不时的:

AdvanceToNext()
{
  if (mySortedList.Count > 0)
  {
    mySortedList.RemoveAt(0);
  }
}

通常,没有问题,但每隔一段时间,这次检查就会出现问题:

if (mySortedList.Any(pair => pair.Key != pair.Value.IndexProperty))
  ; // Should never get here. 

并检查mySortedList的内容表明所有值都相对于键移位了:

{
  7, {IndexProperty = 2}
  22, {IndexProperty = 7}
  45, {IndexProperty = 22}
}

可能导致这种情况发生的原因是什么?

0 个答案:

没有答案