C# 中的“索引超出了数组的边界”.为什么

本文关键字:数组 边界 为什么 中的 索引 | 更新日期: 2023-09-27 18:36:03

我在for-each循环中不断收到异常,我不明白为什么。

当我使array[i]等于i时,错误消失了,但是如果我希望它等于不同的值怎么办?

相关代码:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array1 = new int[5];
            for (int i = 0; i < 5; i++)
            {
                array1[i] = (i + 1);
            }

            foreach (int value in array1)
            {
                Console.Write(array1[value]);
            }
            Console.ReadKey();
        }
    }
}

C# 中的“索引超出了数组的边界”.为什么

foreach 循环的问题在于你使用 VALUE 作为数组索引,而不是简单地打印值。

将代码更改为:

Console.Write(value);

它应该有效。

foreach (**int** value in array1)
{
    Console.Write(**array1[value]**);
}

请改为执行以下操作:

foreach (var value in array1)
{
    Console.Write(value);
}

您正在i+1分配给数组 elment 值并尝试使用此值访问数组。

        int[] array1 = new int[5];
        for (int i = 0; i < 5; i++)
        {
            array1[i] = (i + 1);
        }

在上面的代码中

    array1[0]=1
    array1[1]=2
    array1[2]=3
    array1[3]=4
    array1[4]=5

array1[4]中的值为 5

现在在 foreach 循环中,您正在尝试访问位置 5 的数组,即array1[5] 这会将索引抛出边界异常

在这一行中,您将使用五个元素(0 到 4)来标注数组的尺寸:

int[] array1 = new int[5]; // elements 0, 1, 2, 3, 4

然后你在第一个"for"循环中循环五次,并将每个元素设置为等于索引加一:1,2,3,4,5。 在下一个"for"循环中,您尝试通过其值访问同一数组的元素,但是当您到达最后一个元素时,其值为 5, 它失败,因为没有索引 5。 请记住,只有索引 0 到 4。