为什么此代码会引发IndexOutOfBounds错误?

问题描述 投票:0回答:2

[尝试使用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然后,它抛出了超出范围的错误。有人可以建议原因吗?将不胜感激。

c# indexoutofboundsexception
2个回答
1
投票

List<T>.GetRange()的第二个参数是您要提取的元素数


1
投票

List<card> cardDeckDuplicate2 = cardDeck.GetRange(27, cardDeck.Count - 27); // instead of -1 异常在某种类型的索引超出范围时引发。在您的代码中,问题应该在第四行,您可能应该写IndexOutOfBounds而不是GetRange(27, cardDeck.Count - 1)

© www.soinside.com 2019 - 2024. All rights reserved.