为什么这个代码抛出一个';InvalidOperationException';循环列表时

本文关键字:InvalidOperationException 循环 列表 一个 代码 为什么 | 更新日期: 2023-09-27 18:00:08

在迭代以下循环时,我收到一个InvalidOperationException

foreach (LetterPoint word in NonIntersectingWordsLocations) {
        if (IntersectingWordsLocations.Any(item => item.Position.X == word.Position.X && item.Position.Y == word.Position.Y && item.Letter == word.Letter)) {
            NonIntersectingWordsLocations.Remove(word);
        }
    }

在代码的这一点上,IntersectingWordsLocations总共包含12个元素,而NonIntersectingWordLocations总共包含57个元素。两个列表都包含NO无效或null元素。

其中一个列表元素在列表中如下所示:{(LETTER:R, POSITION:(X:1Y:2))}

这是我用于列表的类。。。

LetterPoint.cs

public class LetterPoint : LetterData<Point>, IEquatable<LetterPoint> {
    public Point Position {
        get { return Item; }
        set { Item = value; }
    }
    public LetterPoint(char c = ' ', int row = 0, int col = 0) {
        Letter = c;
        Position = new Point(row, col);
    }
    public string PositionToString => $"(X:{Item.X}Y:{Item.Y})";
    public override string ToString() => $"(LETTER:{Letter}, POSITION:{PositionToString})";
    // TO USE THE .COMPARE FUNCTION IN THE MAIN FILE
    public bool Equals(LetterPoint other) => Letter == other.Letter && Position == other.Position;
}

为什么我收到这个错误?

编辑:我收到的错误信息是..

"System.InvalidOperationException"类型的未处理异常发生在mscorlib.dll 中

附加信息:集合已修改;枚举操作可能无法执行。

为什么这个代码抛出一个';InvalidOperationException';循环列表时

因为在对列表执行for each操作时无法对列表进行修改(删除或添加元素),所以请尝试使用for循环。

相关文章:
  • 没有找到相关文章