1. ホーム
  2. c#

[解決済み] array.GetLength(0)とarray.GetUpperBound(0)の違いについて

2022-02-26 12:38:49

質問

この2つの方法の違いは何でしょうか。また、どのような場合にどちらかを使うのでしょうか。

int[,] array = new int[4,3];
int length0 = array.GetLength(0);
int upperbound0 = array.GetUpperBound(0);

MSDNによると、GetLengthは要素数を返し、GetUpperBoundは最大インデックスを決定するとありますが、配列はインデックスごとに要素で初期化されるので、どのように異なるのでしょうか。

どのように解決するのですか?

この(ほとんど使われていない)方法をご覧ください。以下より ドキュメント :

public static Array CreateInstance(Type elementType, int[] lengths, int[] lowerBounds)

指定されたTypeと次元の長さを持つ多次元配列を、指定された下限値で作成します。

これを用いると、以下のインデックスを持つ配列を作成することができます。 -5 ... +5 . もし、このような配列を使うことがあれば GetUpperBound() よりもはるかに便利になります。 GetLength()-1 . また GetLowerBound() .

しかし、この種の配列に対するC#のサポートは低いので、このような配列は使用できません。 [] . これらのメソッドは、Array.GetValue() と SetValue() メソッドとの組み合わせでのみ必要となります。