DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ジャグ配列の結合

環境/言語:[NET Framework2.0]
分類:[.NET]

Dim A()() as Object
Dim B()() as Object


Bの配列にAの配列を結合(後ろに追加)したいのですが、どのようにすればよいでしょうか。
A.CopyTo(B)としたところ”この引数の数を受け付ける 'CopyTo' がないため、オーバーロードの解決に失敗しました。”となりできません。

よろしくお願い致します。
  • 題名: Re[1]: ジャグ配列の結合
  • 著者: もょもと
  • 日時: 2008/08/13 15:52:37
  • ID: 22702
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2008/08/13(Wed) 15:56:36 編集(投稿者)

回答ではないので申し訳ないですが、私もこの質問が気になりましたので、
スレッドを上げさせてもらいます。

ジャグArrayList(って名前でいいのかは分かりませんが)を使用すれば、
最終的に目的とする処理自体は可能にはなるのでしょうが、
ジャグ配列の結合ってどうすればいいんでしょうね??
2008/08/13(Wed) 19:40:56 編集(投稿者)

■No22615に返信(kenさんの記事)
> A.CopyTo(B)としたところ”この引数の数を受け付ける 'CopyTo' がないため、オーバーロードの解決に失敗しました。”となりできません。

CopyTo なら、引数は 2 個必要ですよね。


> Bの配列にAの配列を結合(後ろに追加)したいのですが、どのようにすればよいでしょうか。

こういう事で良いのかな。

Dim A()() As String
Dim B()() As String

ReDim A(2)
A(0) = New String() {"123", "456"}
A(1) = Nothing
A(2) = New String() {"AAA", "BBB", "CCC"}

ReDim B(1)
ReDim B(0)(-1)
B(1) = New String() {"aaa"}

Dim oldUpperBound As Integer = UBound(B)
ReDim Preserve B(oldUpperBound + A.Length)
A.CopyTo(B, oldUpperBound + 1)


最後の行は、下記のようにも書けるかな。
Array.Copy(A, 0, B, oldUpperBound + 1, A.Length)
  • 題名: Re[2]: ジャグ配列の結合
  • 著者: もょもと
  • 日時: 2008/08/18 9:38:36
  • ID: 22725
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> こういう事で良いのかな。
>
> Dim A()() As String
> Dim B()() As String
>
> ReDim A(2)
> A(0) = New String() {"123", "456"}
> A(1) = Nothing
> A(2) = New String() {"AAA", "BBB", "CCC"}
>
> ReDim B(1)
> ReDim B(0)(-1)
> B(1) = New String() {"aaa"}
>
> Dim oldUpperBound As Integer = UBound(B)
> ReDim Preserve B(oldUpperBound + A.Length)
> A.CopyTo(B, oldUpperBound + 1)
>
>
> 最後の行は、下記のようにも書けるかな。
> Array.Copy(A, 0, B, oldUpperBound + 1, A.Length)

なるほど、kenさんが質問されてからずっと悩んでいたのですっきりしました。

DOBON.NET | プログラミング道 | プログラミング掲示板