0

私はこれを単純にやっていますが、このエラーが発生します。TRUEをFALSEに変更すると、そのエラーは発生しませんが、テストは実際のエラーです...しかし、テストに合格する必要があり、理解できません..誰か助けてもらえますか? C# ビジュアル スタジオ 2010 NUnit

[Test]

public void prueba1()
{

    List<int> lista1 = new List<int>();

    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]);

    }
4

3 に答える 3

3

リストへの有効なインデックスは 0 ~ 2です。lista1.Countは 3 になるためi、0 から 2になります。iが 2 の場合、 にアクセスしようとしますlista1[i+1]が、これは範囲外です。

于 2012-05-07T01:40:39.857 に答える
2

あなたのリストは[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 < ?) - 境界外例外が発生します。

Assert.False(1 < 2) - AssertFailedException が発生します。

于 2012-05-07T01:55:39.487 に答える
0

i+1エラー箇所です。それを変更。なんで?

i + 1インデックスは 0 から開始して 2 まで移動する必要がありますが、最後のインデックスでエラーが発生します。インデックスを検索しようとするためlista1[3]です。

于 2012-05-07T01:41:34.820 に答える