Exception handling C-Zed图中的错误IF决策超出范围错误-RollingPointPairList

Exception handling C-Zed图中的错误IF决策超出范围错误-RollingPointPairList,exception-handling,zedgraph,Exception Handling,Zedgraph,这真是令人难以置信。我正在使用Zed图的RollingPointPairList,我不断地得到一个错误,说参数超出范围。所以我决定使用Zed Graph的源代码而不是.dll文件。我现在可以看到异常被抛出的位置。但我完全不明白为什么 这是引发异常的地方: RollingPointPairList中的原始代码: public PointPair this[int index] { get { if (index >= Count

这真是令人难以置信。我正在使用Zed图的RollingPointPairList,我不断地得到一个错误,说参数超出范围。所以我决定使用Zed Graph的源代码而不是.dll文件。我现在可以看到异常被抛出的位置。但我完全不明白为什么

这是引发异常的地方:

RollingPointPairList中的原始代码:

public PointPair this[int index]
    {
        get
        {
            if (index >= Count || index < 0)
            {
                    throw new ArgumentOutOfRangeException();
            }
            index += _tailIdx;
            if ( index >= _mBuffer.Length )
                index -= _mBuffer.Length;

            return _mBuffer[index];
        }
令人惊讶的是,索引从未大于或等于count,或小于0

我修改了代码,看看到底发生了什么:

if (index >= Count || index < 0)
            {
                Console.WriteLine(index + " " + Count);
                Console.Beep(5000, 1000);
                if (index >= Count || index < 0)
                {
                    throw new ArgumentOutOfRangeException();
                }
            }
所以我确实听到了嘟嘟声,它确实输出了一些东西,但是这次没有达到投掷的极限,因为第二个if检查

以下是我在输出上看到的内容:

知道是什么导致了这个问题吗


另外,我已经确保多个线程不会试图修改RollingPointPairList

您是如何将输入馈送到此的?我是说索引,是ZedGraph库的代码。有趣的是,让我检查一下它是如何修改的。第二个if检查和第一个if检查相同,所以它应该抛出异常,对吗?如果你能听到一声蜂鸣声,那么你也应该得到异常。这是一个进退两难的问题,它不会抛出异常。所以它通过第一个IF,但不是第二个IF。这就像索引的值在到达第二个IF时发生了某种变化。Count是一个属性吗?如果是,getter的代码是什么?