c#中的错误[]内的索引数目错误;预计21

时间:2014-05-08 17:06:35

标签: c#

我在c#项目中遇到错误。

我正在尝试声明并初始化一个int数组并为其提供初始值。

我正在尝试以下代码:

internal static int[, , , , , , , , , , , , , , , , , , , ,] int_17 = new int[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];

,错误出现在这里:

 int index = 1;
 while (Class9.int_17[index] != num)
 {
      index++;
      if (index > 21)
      { 
         // some code here
      }
 }

3 个答案:

答案 0 :(得分:3)

我不知道你是否打算做你正在做的事情。 你正在尝试初始化一个21 dims阵列!!!

如果您希望数组包含0-20之间的数字:

int[] arr = new int[21]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

声明部分:

[,] 适用于两个dims数组。

[,,] 是三个,如此。

初始化部分:

new int[sizeOfDim]new int[sizeOfFirstDim,sizeOfSecondDim]

如果要在初始化部分中提供初始值,请使用如上所示的大括号进行操作。

答案 1 :(得分:0)

虽然你的代码可以编译而不会给你任何警告,但你可能意味着以不同的方式创建一个数组。用于初始化填充数组的经典数组语法是:

internal static int[] int_17 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
同样地,你可以通过以下方式以更加程序化的方式做到这一点:

internal static int[] int_17 = new int[20];
for(int i = 1; i<=20; i++)
{
    int_17[i-1] = i;
}

答案 2 :(得分:-1)

我认为你想要的是:

internal static int[] int_17 = new int [] {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

. .  . . 

int index = 0; // the index must start with 0, not 1 as in your original code
while (Class9.int_17[index] != num)
{
    index++;
    if (index > 21) //0x21 is a hexadecimal number which means 33
    {
        ....
    ....