2

MSDNを参照すると、 「配列の下限を設定できますが、ArrayList の下限は常にゼロです」と記載されています。

配列 a[10] を宣言すると、下限は常に a[0] になります。

これはそこで指定された下限ですか?はいの場合, 配列の下限を設定するにはどうすればよいですか? 配列のインデックスは常に [0] で始まるため.

それとも、リンクに記載されている下限は何か違うのでしょうか?

注:リンクが.NET Framework 1.1のコンテンツを指していることは知っていますが、彼らが何を言及しているのかを知りたいと思っています。

4

2 に答える 2

4

を使用して、ゼロ以外の下限を持つ配列を作成できます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

個人的には、ペストのようにゼロ以外の下限の配列を使用することは避けたいと思います。それらは遅く、作業が面倒です。

于 2010-01-19T13:50:47.347 に答える
3

C# と VB.NET の下限は常に0です。Visual Basic 6.0 以前では、可変の下限が許可されていました。彼らは、.NET 用の言語の書き直しのためにそれを削除しました。

これを行う方法について詳しく説明している記事を次に示します: http://msdn.microsoft.com/en-us/magazine/cc301755.aspx。「ゼロ以外の下限を持つ配列の作成」を探します

于 2010-01-19T13:32:34.393 に答える