掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
2次元配列の宣言 (ID:143328)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Dim strArray()() As String > と > Dim strArray(,) As String > の違いはあるのでしょうか? 違うものであることは、すでに気づいておられるのですよね。実際、 > には格納できません。 という状況になっているわけですし。 まず、後者は二次元配列ですが、前者はそうではありません。 専門用語では「ジャグ配列」と呼ばれる種類のものです。 後者は二次元配列であり、その個々の要素は「String」という型ですが、 前者は一次元配列であり、その個々の要素は「String の一次元配列」です。 配列の配列、それがジャグ配列(jagged arrays)です。 http://msdn.microsoft.com/ja-jp/library/hkhhsz9t.aspx たとえば、こんなコードがあるとします。a はジャグ配列、b は二次元配列です。 Dim a()() As Integer = { New Integer() {1, 2, 3}, New Integer() {4, 5, 6, 7}, New Integer() {8, 9} } MsgBox(TypeName(a)) 'Integer()() MsgBox(TypeName(a(0))) 'Integer() MsgBox(TypeName(a(1)(2))) 'Integer Dim b(,) As Integer = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} } MsgBox(TypeName(b)) 'Integer(,) MsgBox(TypeName(b(0, 0))) 'Integer a の方は、a(0) と a(1) で要素数が異なっていますよね。 一方 b は、b は 3x3 の二次元配列です。仮に b を Dim b(,) As Integer = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10} } とした場合、四角形な二次元配列にならず、エラーとなります。 3x4 となるよう Dim b(,) As Integer = { {1, 2, 3, 0 }, {4, 5, 6, 0}, {7, 8, 9, 10} } のようにする分には OK ですけれどね。これが両者の違いです。 そしてジャグ配列は、単に「配列の配列」というだけですので、 下記のようなパターンもアリです。 Dim a()() As Integer '1次元配列を格納した1次元配列 Dim b(,)() As Integer '1次元配列を格納した2次元配列 Dim c()(,) As Integer '2次元配列を格納した1次元配列 Dim d(,)(,) As Integer '2次元配列を格納した2次元配列
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.