tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: ジャグ配列でRedim Preserve みたいな使い方をしたいのです
投稿日: 2017/08/31(Thu) 17:52
投稿者魔界の仮面弁士
> 魔界の弁士様
×魔界の弁士
○魔界の仮面弁士

> HongLinang様からも
×HongLinang
○Hongliang


> Dictionary メソッド(で良いのでしょうか?)

「Dictionary クラス」ですね。型パラメーターまで含めて書くとこんな感じ。

Dim 約数1 As Dictionary(Of Integer, Integer())


また、先のコードの .ToDictionary は、
戻り値として Dictionary を返す「拡張メソッド」です。


結果を見るときは、このようにします。

MsgBox( 約数1(2).Length ) '2 を返す … 2 の約数は、{1, 2} の 2 つ
MsgBox( 約数1(8).Length ) '4 を返す … 8 の約数は、{1, 2, 4, 8} の 4 つ
MsgBox( 約数1(8)(0) ) '1 を返す
MsgBox( 約数1(8)(1) ) '2 を返す
MsgBox( 約数1(8)(2) ) '4 を返す
MsgBox( 約数1(8)(3) ) '8 を返す


元質問の Jagged Array として受け取る例も記載しておきます。
冒頭の「Dim Yak(2)() As Integer」の意図に合っているのかは不明ですが。


Dim 約数3()() As Integer = Enumerable.Range(2, 9).Select(
   Function(b) Enumerable.Range(1, b).Where(
    Function(c) b Mod c = 0
  ).ToArray()
 ).ToArray()


この場合、
 MsgBox( 約数3(0).Length ) '2 を返す … 2 の約数は、{1, 2} の 2 つ
 MsgBox( 約数3(2).Length ) '2 を返す … 4 の約数は、{1, 2, 4} の 3 つ
 MsgBox( 約数3(8).Length ) '4 を返す … 10 の約数は、{1, 2, 5, 10} の 4 つ
という形になります。

「10 の約数」が、ジャグ配列の「約数3(8)」に格納されているよりも、
「10 の約数」が、Dictionaryの「約数1(10)」に格納されている方が分かりやすいですよね。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。