C# 数组不接受 "size"

C# array wont accept "size"

又是菜鸟。今天的问题是:

int[] forArray = new int[10];
        for (int k = 1; k <= 10; k++)
        {
            forArray[k] = k * 2;
            Console.WriteLine(k); // test
        }
        for (int k = 0; k < 10; k++)
        {
            Console.WriteLine(forArray[k]);
        }

它给出了一个 "out of bounds" 错误。我希望我的程序输出 2 到 20 之间的自然数。而是给出一个错误。当我将第一个 for 循环条件更改为 k <= 9 它运行但给了我 0 而不是 20。它喜欢它 returns 最后一个值为 0 并且 "re-positions" 它到 "front" .很抱歉这个非常简单的问题。

在引用元素时,数组是从零开始的。因此,对于数组中的 10 个项目(这是您分配的),它是 forArray[0]forArray[9]。您的代码尝试从 forArray[1] 循环到 forArray[10],并且没有索引位置 10(当您最终越界时)。

你的第二个 for 循环没问题,因为它从 0 到 9。

注意:由于您的循环需要从零开始,如果您希望它以 2.[=15 开头,则需要调整计算填充到索引位置的数字的方式=]

将您的条件更改为 k

forArray[k - 1] = k * 2;

调试您的代码并逐步执行,正如您在下面看到的,您正在尝试分配给不存在的索引 [10]。

{
    int[] forArray = new int[10];

    for (int k = 1; k < 10; k++)  // k < 10 instead of k <= 10
    {
        forArray[k] = k * 2;
        Console.WriteLine(k); // test

            //forArray[0] = SKIPPED
            //forArray[1] = 2
            //forArray[2] = 4
            //forArray[3] = 6
            //forArray[4] = 8
            //forArray[5] = 10
            //forArray[6] = 12
            //forArray[7] = 14
            //forArray[8] = 16
            //forArray[9] = 18
            //forArray[10] INVALID
    }
    for (int k = 0; k < 10; k++)
    {
        Console.WriteLine(forArray[k]);
    }
}

Tested here