タイトル : Re: ジャグ配列でRedim Preserve みたいな使い方をしたいのです 投稿日 : 2017/08/31(Thu) 15:58 投稿者 : Hongliang
単純に、 Yak(N1) = Temp だけでもいいんじゃないかと思いますけど。 Tempは、約数の探索時には、動的に要素が追加されていくという性質を持っていますよね。 こういう場合、配列を追加のたびにReDim Preserveしていくのではなく、 配列の代わりにList(Of Integer)を使います。 そうすれば、追加時にAddしていくだけで済みます。 For N1 As Integer = 2 To 10 '2〜10の配列をジャグ配列に格納する Dim Temp As New List(Of Integer) ' 変数はメソッド先頭で全部宣言するより必要なところで宣言したほうが見やすい For N2 As Integer = 1 To N1 / 2 If N1 Mod N2 = 0 Then Temp.Add(N2) End If Next ReDim Preserve Yak(N1) ' Yakの要素数を確保 Yak(N1) = Temp.ToArray() ' 最終的に配列にするにはToArrayメソッド Next また、Yakも、毎回ReDim Preserveするのは非効率です。 上限が10と決まっているのであれば初めにDimする際に Dim overLimit = 10 ' 実際にはメソッド引数とかで渡されるとか? Dim Yak(overLimit)() のようにすればいちいちReDim Preserveする必要はなくなります。 // 個人的には、ジャグ配列ではなく、Dictionary(Of Integer, Integer())を使いたいところですが。 |