次元は、配列の要素の仕様を変更できる方向です。 月の各日の売上合計を保持する配列には、1 つのディメンション (月の日) があります。 月の各日の部門別の売上合計を保持する配列には、2 つのディメンション (部門番号と月の日) があります。 配列が持つ次元の数は、その ランクと呼ばれます。
注
Rank プロパティを使用して、配列に含まれる次元の数を決定できます。
ディメンションの操作
配列の要素を指定するには、各次元の インデックス または 添字 を指定します。 要素は、インデックス 0 からそのディメンションの最も高いインデックスまでの各ディメンションに沿って連続しています。
次の図は、ランクが異なる配列の概念構造を示しています。 図の各要素は、それにアクセスするインデックス値を示しています。 たとえば、 (1, 0)
インデックスを指定することで、2 次元配列の 2 番目の行の最初の要素にアクセスできます。
1 次元
多くの配列には、各年齢のユーザー数など、1 つの次元しかありません。 要素を指定する唯一の要件は、その要素がカウントを保持する期間です。 したがって、このような配列は 1 つのインデックスのみを使用します。 次の例では、0 から 120 までの年齢数の 1 次元配列 を保持する変数を宣言します。
Dim ageCounts(120) As UInteger
2 次元
一部の配列には、キャンパス内の各ビルの各フロアのオフィス数など、2 つの次元があります。 要素の仕様には建物番号とフロアの両方が必要であり、各要素は建物と床の組み合わせの数を保持します。 したがって、このような配列は 2 つのインデックスを使用します。 次の例では、建物 0 から 40、フロア 0 から 5 のオフィス数の 2 次元配列 を保持する変数を宣言します。
Dim officeCounts(40, 5) As Byte
2 次元配列は 、長方形配列とも呼ばれます。
3 次元
いくつかの配列には、3 次元空間の値など、3 次元があります。 このような配列は 3 つのインデックスを使用します。この場合、物理空間の x、y、z 座標を表します。 次の例では、3 次元ボリュームのさまざまなポイントで気温の 3 次元配列 を保持する変数を宣言します。
Dim airTemperatures(99, 99, 24) As Single
3 次元以上
配列には最大 32 個の次元を含めることができますが、3 つ以上の次元を持つことはまれです。
注
配列に次元を追加すると、配列に必要なストレージの合計が大幅に増加するため、多次元配列を慎重に使用してください。
異なるディメンションの使用
現在の月の毎日の売上金額を追跡するとします。 次の例に示すように、31 個の要素を含む 1 次元配列を月の各日に 1 つずつ宣言できます。
Dim salesAmounts(30) As Double
次に、1 か月の毎日だけでなく、年の毎月についても同じ情報を追跡するとします。 次の例に示すように、12 行 (月) と 31 列 (日) を含む 2 次元配列を宣言できます。
Dim salesAmounts(11, 30) As Double
次に、配列に 1 年以上の情報を保持することを決定したとします。 売上金額を 5 年間追跡する場合は、次の例に示すように、5 つのレイヤー、12 行、31 列の 3 次元配列を宣言できます。
Dim salesAmounts(4, 11, 30) As Double
各インデックスは 0 から最大値まで異なるため、 salesAmounts
の各ディメンションは、そのディメンションに必要な長さより 1 つ小さいものとして宣言されることに注意してください。 また、配列のサイズは新しい次元ごとに大きくなります。 前の例の 3 つのサイズは、それぞれ 31、372、および 1,860 個の要素です。
注
Dim
ステートメントまたは New
句を使用せずに配列を作成できます。 たとえば、 CreateInstance メソッドを呼び出したり、別のコンポーネントでこの方法で作成された配列をコードに渡したりすることができます。 このような配列は、0 以外の下限を持つことができます。
GetLowerBound メソッドまたは LBound
関数を使用して、ディメンションの下限をいつでもテストできます。
こちらも参照ください
.NET