を使用して、ゼロ以外の下限を持つ配列を作成できますArray.CreateInstance。
多次元にしない限り、それを a Foo[](関連する型は where )にキャストできないことに注意してください。CLR 内には、ベクトル(ゼロベース、1 次元) と配列(多次元でゼロ以外の下限を持つことができる)Fooの 2 種類の配列があります。
C#の AT[]は常にベクトルにT[][]対応しますが、a は配列に対応します。したがって、次のことができます。
int[][] rectangle = (int[][]) Array.CreateInstance(typeof(int),
new int[]{2, 2}, // lengths
new int[]{-1, -1}); // lower bounds
しかし、これは失敗します:
int[] rectangle = (int[]) Array.CreateInstance(typeof(int),
new int[]{2}, // length
new int[]{-1}); // lower bound
IEnumerable<int>同様に、 orにキャストすることはできませんが、問題なくIList<int>反復できますIEnumerable。
個人的には、ペストのようにゼロ以外の下限の配列を使用することは避けたいと思います。それらは遅く、作業が面倒です。