C# 索引超出范围异常

C# 索引超出范围异常,c#,arrays,loops,C#,Arrays,Loops,我试图通过减去每个循环中的初始化值,在数组中放入一个整数。这段代码似乎适合我,但编译器总是声称“索引超出了数组的界限”。我在这里做错了什么,特别是在itr方面 static void Main() { int itr = 0; int[] arr = {}; for(int i = 2305; i > 0; i-=576) { arr[itr] = i; itr+=1; }

我试图通过减去每个循环中的初始化值,在数组中放入一个整数。这段代码似乎适合我,但编译器总是声称“索引超出了数组的界限”。我在这里做错了什么,特别是在itr方面

  static void Main()
  {
      int itr = 0;
      int[] arr = {};

      for(int i = 2305; i > 0; i-=576)
      {
            arr[itr] = i;
            itr+=1;
      }

      Console.ReadLine();
  }

此行创建了一个空数组(因此
长度
0):

您应该为数组指定大小。在您的情况下,大小可以是:

int[] arr = new int[2305 / 576 + 1];

整数数组“arr”的长度为0; 因为没有设置大小或值,所以数组根本没有值

这是一个可以工作的迭代

int[] arr = new int[ 1000 ];
int itr = 2305;

for ( int i = arr.Length-1; i > -1; i-- ) {
    itr -= 576;
    arr[ i ] = itr;
}

您认为阵列的大小/长度是多少?(提示:检查
arr.Length
的值)数组大小是4,但在循环中是5?我试图在每个循环中将索引减去1,但仍然不起作用“数组大小为4”你怎么知道的?(提示:根据您问题中的代码,它不是…)
int[] arr = new int[ 1000 ];
int itr = 2305;

for ( int i = arr.Length-1; i > -1; i-- ) {
    itr -= 576;
    arr[ i ] = itr;
}