C#のジャグ配列の要素の型とは?参照型としてnullで初期化される仕組みを解説
C#におけるジャグ配列(Jagged Array)とは、「配列の配列」のことです。そのため、ジャグ配列の各要素は参照型であり、宣言した直後の状態では null に初期化されるという特徴があります。
つまり、ジャグ配列自体は1つの配列ですが、その各要素がさらに別の配列への参照を保持する構造になっています。この性質により、内側の配列ごとに異なる長さを持たせることができるのが大きなメリットです。
ジャグ配列の宣言方法
まず、ジャグ配列を宣言します。以下のように、角括弧を2つ重ねて記述します。
int[][] marks;
ジャグ配列の初期化方法
次に、宣言したジャグ配列を初期化します。ここでは、5つの整数型配列を要素として持つ「marks」を作成しています。
int[][] marks = new int[][]{new int[]{ 40,57 },new int[]{ 34,55 }, new int[]{ 23,44 },new int[]{ 56, 78 }, new int[]{ 66, 79 } };このように、外側の配列の各要素に対して、個別に新しい配列を割り当てる形になります。なお、各内側配列の長さは必ずしも同じである必要はなく、例えば最初の要素だけ3つの値を持ち、残りは2つの値という柔軟な構成も可能です。
C#でのジャグ配列の実装例
それでは、C#でジャグ配列を使用した完全なサンプルコードを見てみましょう。生徒ごとの点数を格納し、二重ループですべての要素を出力する例です。
サンプルコード
using System;
namespace MyApplication {
class MyDemoClass {
static void Main(string[] args) {
int i, j;
int[][] marks = new int[][] {
new int[] { 90, 95 },
new int[] { 89, 94 },
new int[] { 78, 87 },
new int[] { 76, 68 },
new int[] { 98, 91 }
};
for (i = 0; i < 5; i++) {
for (j = 0; j < 2; j++) {
Console.WriteLine("marks[{0}][{1}] = {2}", i, j, marks[i][j]);
}
}
Console.ReadKey();
}
}
}実行結果
marks[0][0] = 90 marks[0][1] = 95 marks[1][0] = 89 marks[1][1] = 94 marks[2][0] = 78 marks[2][1] = 87 marks[3][0] = 76 marks[3][1] = 68 marks[4][0] = 98 marks[4][1] = 91
まとめ
ジャグ配列の要素は参照型であり、初期化前は null となる点に注意が必要です。内側の配列を代入する前にアクセスすると NullReferenceException が発生するため、必ず各要素に配列インスタンスを割り当ててから使用しましょう。ジャグ配列を使いこなすことで、行ごとに長さが異なるデータ構造を効率的に表現できます。
-
JavaScript DOMとは?基本の仕組みと要素の取得方法をわかりやすく解説
JavaScriptのDOM(Document Object Model:ドキュメントオブジェクトモデル)は、Webページ上のHTML要素を表現する仕組みです。DOMはインターフェースとして機能し、ページのコンテンツやスタイルを変更することで、Webページを自由に操作できるようにします。 DOMにアクセスするには、Webページ上で右クリックして「検証(Inspect)」を選択します。すると画面の右側または左側にパネルが表示され、現在閲覧しているページのHTML要素を確認できます。要素にマウスカーソルを合わせると、ページ上の該当部分がハイライトされるため、どの要素がページのどのセクションに対応
-
C#のint型が取れる最大値はいくつ?整数型の範囲を一覧で解説
C#における整数型 int の最大値は 2,147,483,647(約21億)です。これは32ビット符号付き整数の上限にあたり、プログラム内では int.MaxValue という定数で取得することもできます。逆に最小値は −2,147,483,648 で、int.MinValue で参照可能です。C#の主なデータ型と値の範囲一覧以下の表は、C#で利用できる主なデータ型と、それぞれの意味・範囲・既定値をまとめたものです。用途に応じて適切な型を選ぶことで、メモリの無駄遣いやオーバーフローを防ぐことができます。型説明範囲既定値boolブール値(真偽値)true または falsefalsebyte8