多次元配列とジャグged配列は、Visual Basicにおけるコレクションの操作に関する2つの異なる構造です。元々、VB(VB6、.NET)は、長方形(2次元、3次元)の配列のみをサポートしていました。その後、.NETでは、ジャグged配列が別のオブジェクトとしてサポートされるようになりました。
従来の多次元配列(例:Dim matrix(2,3) As Integer)は、データのテーブルが必ず長方形である必要がある場合に便利です。ジャグged配列は、VB.NETに、内部配列の要素数が異なるように作成できる機能を導入しました。
アプローチの誤った選択は、メモリの非効率的な使用(たとえば、長方形の配列ではすべての行が固定されること)や要素へのアクセスロジックの誤り(範囲外のアクセスエラー)を引き起こします。構文や初期化の方法を混同することもよくあります。
長方形(多次元)配列は、コンテンツが常に満杯である場合(例:ゲームボード)に選択されます。ジャグged配列は、行の長さが異なる場合(例:異なるクラスの生徒のリスト)に使用されます。要素へのアクセス方法はそれぞれ異なります。
コードの例:
' 多次元配列 Dim rect(1, 2) As Integer ' 2行、3列(ゼロからのインデックス) rect(0,0) = 1 : rect(0,1) = 2 : rect(0,2) = 3 rect(1,0) = 4 : rect(1,1) = 5 : rect(1,2) = 6 ' ジャグged配列 Dim jagged(2)() As Integer ' 3要素の配列、それぞれが配列 jagged(0) = New Integer() {1, 2} jagged(1) = New Integer() {3, 4, 5} jagged(2) = New Integer() {6} Console.WriteLine(rect(1,2)) ' 6 Console.WriteLine(jagged(1)(2)) ' 5
主な特徴:
Dim a(2,3) As Integerを使用してジャグged配列を作成できますか?
答え:いいえ、これは長方形の配列を作成します。ジャグged配列は次のように定義します:Dim a(2)() As Integer または Dim a As Integer()().
ジャグged構造の内部配列を初期化せずに要素にアクセスしようとするとどうなりますか?
答え:内部配列が作成されていないため、NullReferenceException例外がスローされます。
1次元配列とジャグged配列の次元の長さを取得する構文の違いは何ですか?
答え:長方形の場合:a.GetLength(0)(行数)、a.GetLength(1)(列数)。ジャグgedの場合:a.Length(行数)、a(i).Length(i行目の要素数)。
生徒のリストを学年ごとに保存するために、長方形の配列(10, 30)を選択します — 空の要素は使用されておらず、一部のクラスは最大の生徒数よりも少ないです。
長所:
短所:
ジャグged配列を使用:各内部配列は、クラスの実際の生徒のリストであり、メモリの最適化と処理のシンプルさが向上します。
長所:
短所: