C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

VB LISTクラスの入れ子について

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■86055 / inTopicNo.1)  VB LISTクラスの入れ子について
  
□投稿者/ ポスト (1回)-(2017/12/14(Thu) 18:23:43)

分類:[VB.NET/VB2005 以降] 

visualStudio2015でVBを書いています。

現在、Listクラスにてデータを入れ子にし、3階層のリストを作成したいのですが上手くいきません。
よければ助言を頂けないでしょうか。

現状は以下のような2階層のリストまでは作成できております。
ここに子2クラスを入れたいのですがpostData.aの下にどうやって
bリストを入れるのかがわからない状態になっております。


'メイン
sub main()

Dim postData As Person
postData = New Person


postData.a= New List(Of ChildId_1)

postData.a.Add(New ChildId_1 With {
.c =""
})


end sub

=======================

'親クラス
Public Class Person

Public Property a As New List(Of ChildId_1)()


End Class

'子1クラス
Public Class ChildId_1

Public Property b As New List(Of ChildId_2)()
Public Property c As String

End Class

'子2クラス
Public Class ChildId_2

Public Property d As String

End Class


引用返信 編集キー/
■86056 / inTopicNo.2)  Re[1]: VB LISTクラスの入れ子について
□投稿者/ 魔界の仮面弁士 (1503回)-(2017/12/14(Thu) 20:06:35)
No86055 (ポスト さん) に返信
> 現在、Listクラスにてデータを入れ子にし、3階層のリストを作成したいのですが上手くいきません。
> よければ助言を頂けないでしょうか。

作業用の変数を一つ用意すると楽かな。

Dim postData As New Person()
Dim child As ChildId_1

'親に子を追加してから、その子に孫を追加していく
child = New ChildId_1() With {.c = "子1"}
postData.a.Add(child)
child.b.Add(New ChildId_2() With {.d = "子1-孫1"})
child.b.Add(New ChildId_2() With {.d = "子1-孫2"})
child.b.Add(New ChildId_2() With {.d = "子1-孫3"})
child = New ChildId_1() With {.c = "子2"}
postData.a.Add(child)
child.b.Add(New ChildId_2() With {.d = "子2-孫1"})
child.b.Add(New ChildId_2() With {.d = "子2-孫2"})
child.b.Add(New ChildId_2() With {.d = "子2-孫3"})
child = New ChildId_1() With {.c = "子3"}
postData.a.Add(child)
child.b.Add(New ChildId_2() With {.d = "子3-孫1"})
child.b.Add(New ChildId_2() With {.d = "子3-孫2"})
child.b.Add(New ChildId_2() With {.d = "子3-孫3"})



あるいはこう。

Dim postData As New Person()
Dim child As ChildId_1

'子に孫を追加してから、その子を親に追加していく
child = New ChildId_1() With {.c = "子1"}
child.b.Add(New ChildId_2() With {.d = "子1-孫1"})
child.b.Add(New ChildId_2() With {.d = "子1-孫2"})
child.b.Add(New ChildId_2() With {.d = "子1-孫3"})
postData.a.Add(child)
child = New ChildId_1() With {.c = "子2"}
child.b.Add(New ChildId_2() With {.d = "子2-孫1"})
child.b.Add(New ChildId_2() With {.d = "子2-孫2"})
child.b.Add(New ChildId_2() With {.d = "子2-孫3"})
postData.a.Add(child)
child = New ChildId_1() With {.c = "子3"}
child.b.Add(New ChildId_2() With {.d = "子3-孫1"})
child.b.Add(New ChildId_2() With {.d = "子3-孫2"})
child.b.Add(New ChildId_2() With {.d = "子3-孫3"})
postData.a.Add(child)




child 変数を作らずにまとめて書く場合はこう。

Dim postData As New Person() With {
  .a = New List(Of ChildId_1)() From {
    New ChildId_1() With {
      .c = "子1",
      .b = New List(Of ChildId_2) From {
        New ChildId_2() With {.d = "子1-孫1"},
        New ChildId_2() With {.d = "子1-孫2"},
        New ChildId_2() With {.d = "子1-孫3"}
      }
    },
    New ChildId_1() With {
      .c = "子2",
      .b = New List(Of ChildId_2) From {
        New ChildId_2() With {.d = "子2-孫1"},
        New ChildId_2() With {.d = "子2-孫2"},
        New ChildId_2() With {.d = "子2-孫3"}
      }
    },
    New ChildId_1() With {
      .c = "子3",
      .b = New List(Of ChildId_2) From {
        New ChildId_2() With {.d = "子3-孫1"},
        New ChildId_2() With {.d = "子3-孫2"},
        New ChildId_2() With {.d = "子3-孫3"}
      }
    }
  }
}
引用返信 編集キー/
■86064 / inTopicNo.3)  Re[2]: VB LISTクラスの入れ子について
□投稿者/ ポスト (2回)-(2017/12/15(Fri) 10:17:36)
魔界の仮面弁士 様

解決致しました、変数を分けた後に順番に入れる必要があったのですね。


解決方法が詰まっていたので助かりました、ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ