次の C# コードがあります。
List<int[,]> l1 = new List<int[,]>();
l1[0] = new int[1, 1];
System.ArgumentOutOfRangeException を正面からスローします。
どうして?
リストはデフォルトで空で作成されます[]。Add()
 List<int[,]> l1 = new List<int[,]>();
 l1.Add(new int[1, 1]); 
または .NET 4.0 初期化子を使用します (意味的には上記と同じ):
  List<int[,]> l1 = new List<int[,]>(){new int[1, 1]};
インデックスアクセスではなく、リストでList.Addを使用する必要があります  。l1.Add(new int[1, 1]);