为什么此代码会抛出 IndexOutOfBounds 错误?
Why does this code throw an IndexOutOfBounds error?
尝试将列表分成两半时,使用 C# 中的 GetRange 函数。当运行下面的代码;
Console.WriteLine(cardDeck.Count());
List<card> cardDeckDuplicate = cardDeck.GetRange(0, 26);
Console.WriteLine(cardDeckDuplicate.Count());
List<card> cardDeckDuplicate2 = cardDeck.GetRange(27, cardDeck.Count - 1);
Console.WriteLine(cardDeckDuplicate2.Count());
我要拆分的列表是cardDeck,card是用户创建的对象。这个程序的输出是
52、
26.
然后它抛出一个越界错误。
谁能建议为什么?我们将不胜感激。
List<T>.GetRange()
的第二个参数是你要提取的元素个数,不是你要提取的最后一个元素的索引
所以这应该有效:
List<card> cardDeckDuplicate2 = cardDeck.GetRange(27, cardDeck.Count - 27); // instead of -1
当某种索引超出范围时,将抛出 IndexOutOfBounds
异常。在你的代码中,问题应该在第 4 行,而不是 GetRange(27, cardDeck.Count - 1)
你应该写 GetRange(27, cardDeckCount - 27)
而不是!
尝试将列表分成两半时,使用 C# 中的 GetRange 函数。当运行下面的代码;
Console.WriteLine(cardDeck.Count());
List<card> cardDeckDuplicate = cardDeck.GetRange(0, 26);
Console.WriteLine(cardDeckDuplicate.Count());
List<card> cardDeckDuplicate2 = cardDeck.GetRange(27, cardDeck.Count - 1);
Console.WriteLine(cardDeckDuplicate2.Count());
我要拆分的列表是cardDeck,card是用户创建的对象。这个程序的输出是 52、 26. 然后它抛出一个越界错误。 谁能建议为什么?我们将不胜感激。
List<T>.GetRange()
的第二个参数是你要提取的元素个数,不是你要提取的最后一个元素的索引
所以这应该有效:
List<card> cardDeckDuplicate2 = cardDeck.GetRange(27, cardDeck.Count - 27); // instead of -1
当某种索引超出范围时,将抛出 IndexOutOfBounds
异常。在你的代码中,问题应该在第 4 行,而不是 GetRange(27, cardDeck.Count - 1)
你应该写 GetRange(27, cardDeckCount - 27)
而不是!