【Zenject】IInitializable.Initialize()内でforを使って配列やListを初期化するとエラーが出る

問題

このようにZenjectのIInitializable.Initialize()メソッド内で配列を初期化しようとすると

int[] array = new int[10];
int num = 5;

void IInitializable.Initialize()
{
  for(int i = 0; i < 10; i++)
  {
    array[i] = num;
  }
}

ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.

というエラーが出ます。

配列ではなくてListを使った場合も同様のエラーが出ます。

どうやらループの最後のi = 9の場合だけが実行されているような気がします。原因は分かりません。

解決法

LINQを使って強引にforと同じことを行うと何故か上手くいきます。

int[] array = new int[10];
int num = 5;

Enumerable.Range(0, 10)
  .ToList()
  .ForEach(i =>
  {
       array[i] = num;
  });

(追記)

foreachを使ってもうまくいくことがわかりました。