C#でジャグ配列(配列の配列)の長さとランクを取得する方法
C#におけるジャグ配列(jagged array、配列の配列)は、それぞれの要素が異なる長さの配列を持つことができる柔軟なデータ構造です。この記事では、ジャグ配列の長さやランク(次元数)、境界値を取得する方法を解説します。
ジャグ配列の宣言と初期化
まず、次のようにジャグ配列を宣言して初期化します。
int[][] arr = new int[][] {
new int[] { 0, 0 },
new int[] { 1, 2 },
new int[] { 2, 4 },
new int[] { 3, 6 },
new int[] { 4, 8 }
};この例では、5つのint型配列を要素として持つジャグ配列を作成しています。
長さ・ランク・境界値を取得する
ジャグ配列の情報を取得するには、以下のプロパティやメソッドを使用します。
- Length プロパティ:配列に含まれる要素(内側の配列)の総数を返します。
- GetLowerBound() メソッド:指定した次元の最小インデックス(下限)を返します。C#では通常「0」です。
- GetUpperBound() メソッド:指定した次元の最大インデックス(上限)を返します。
- Rank プロパティ:配列の次元数(ランク)を返します。ジャグ配列の場合は「1」となります。
サンプルコード
以下のコードでは、これらのプロパティとメソッドを使って、ジャグ配列の長さとランクを出力しています。
using System;
public class Program {
public static void Main() {
int[][] arr = new int[][] {
new int[] { 0, 0 },
new int[] { 1, 2 },
new int[] { 2, 4 },
new int[] { 3, 6 },
new int[] { 4, 8 }
};
// 長さ
Console.WriteLine("Length:" + arr.Length);
// 上限インデックス
Console.WriteLine("Upper Bound: {0}", arr.GetUpperBound(0).ToString());
// 下限インデックス
Console.WriteLine("Lower Bound: {0}", arr.GetLowerBound(0).ToString());
// 次元数(ランク)
Console.WriteLine("Dimensions of Array : " + arr.Rank);
}
}実行結果
Length:5 Upper Bound: 4 Lower Bound: 0 Dimensions of Array : 1
解説
実行結果から以下のことがわかります。
- Length: 5 — ジャグ配列には5つの内側の配列が格納されています。
- Upper Bound: 4 — 最後の要素のインデックスは「4」(要素数5 - 1)です。
- Lower Bound: 0 — インデックスは「0」から始まります。
- Dimensions of Array: 1 — ジャグ配列は「配列の配列」ですが、外側の配列自体は1次元です。そのためRankは「1」になります。
なお、各内側の配列の長さを個別に知りたい場合は、arr[i].Length のようにアクセスします。ジャグ配列は各行の長さが異なってもよいため、多次元配列(矩形配列)とは異なり、全体の要素数は arr.Length だけではわからない点に注意しましょう。
-
C#で配列の次元数を取得する方法
C#で配列の次元数を調べたい場合は、Rankプロパティを使用します。このプロパティは、配列の次元(ランク)を整数値として返します。arr.Rankここで、arrは対象となる配列です。例えば、以下のように2次元配列を宣言した場合:int[] arr = new int[3,4];さらに、配列の行数や列数といった各次元のサイズを取得したい場合は、GetLengthメソッドを使用します。arr.GetLength(0); // 第1次元のサイズ(行数) arr.GetLength(1); // 第2次元のサイズ(列数)サンプルコード以下に、RankプロパティとGetLengthメソッドを使った完全な
-
C#で配列の長さを取得する方法
C#で配列の長さ(要素数)を取得するには、Lengthプロパティを使用します。このプロパティは、配列に格納されている全要素の数を整数値として返します。サンプルコード以下に具体的な使用例を示します。using System; class Program { static void Main(){ int[] arr = new int[10]; // 配列の長さを取得 int arrLength = arr.Length; Console.WriteLine(配列の長さ: + arrLength); } }実行結