指数超出范围。 必须是非负的且小于集合的大小?

我这样做很简单,我得到这个错误。 当我将TRUE更改为FALSE时它不会给出错误,但测试真正的错误…但我需要通过测试,我不明白..有人可以帮忙吗? C#visual studio 2010 NUnit

[Test] public void prueba1() { List lista1 = new List(); lista1.Add(1); lista1.Add(2); lista1.Add(3); for (int i = 0; i < lista1.Count; i++) { Console.WriteLine(lista1[i]); Assert.True(lista1[i]<lista1[i+1]); } 

列表中的有效索引是0到2. lista1.Count将是3,因此i从0变为2.当i为2时,您尝试访问lista1[i+1] ,这超出了范围。

你的清单是[1,2,3]

在每次迭代中,都会检查以下语句。
1 <2
2 <3
3 <?

在Assert.True和Assert.False中,如果检查的条件与函数调用不同,则抛出AssertFailedException错误。(Assert.True需要为True)

Assert.True(1 <2)有效,
Assert.True(2 <3)有效,Assert.True(3 <?) - 将发生Out of Bounds异常。

Assert.False(1 <2) - 将发生AssertFailedException。

i+1是错误的地方。 更改。 为什么?

你的索引应该从0开始直到2,但是错误出现在最后一个索引中,因为它试图搜索i + 1索引,这意味着它正在搜索lista1[3] ,当索引从0开始并且直到1时它不存在少于收集的长度。