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

構造体をArrayListにAddしたときの値の取得

環境/言語:[Windows2000, VB.NET]
分類:[.NET]


こんにちわ。
メンバにArrayListを含む構造体を、ArrayListにAddしたときについて質問です。

├あいうえお
│├1111
│└2222
└かきくけこ
 ├3333
 └4444


上のようなデータを取得したいと思い、以下のように記述しました。


 '構造体
 Public Structure STRUCT_DATA
  Public str As String
  Public arr As ArrayList
 End Structure


 '処理
 Dim tData As STRUCT_DATA
 Dim arrData As ArrayList

 arrData = New ArrayList
 tData.arr = New ArrayList

 tData.str = "あいうえお"
 tData.arr.Add("1111")
 tData.arr.Add("2222")
 arrData.Add(tData)

 tData.arr = New ArrayList
 tData.str = "かきくけこ"
 tData.arr.Add("3333")
 tData.arr.Add("4444")
 arrData.Add(tData)


ここで、"あいうえお"という値を取得するときに、
 arrData(0).str
とすると、「遅延バインディングを使用できません」というエラーになります。
どのようにして値を取得すればいいのでしょうか?
お教え下さい。
■No9420に返信(ゆにさんの記事)
>
> こんにちわ。
> メンバにArrayListを含む構造体を、ArrayListにAddしたときについて質問です。
>
> ├あいうえお
> │├1111
> │└2222
> └かきくけこ
>  ├3333
>  └4444
>
>
> 上のようなデータを取得したいと思い、以下のように記述しました。
>
>
>  '構造体
>  Public Structure STRUCT_DATA
>   Public str As String
>   Public arr As ArrayList
>  End Structure
>
>
>  '処理
>  Dim tData As STRUCT_DATA
>  Dim arrData As ArrayList
>
>  arrData = New ArrayList
>  tData.arr = New ArrayList
>
>  tData.str = "あいうえお"
>  tData.arr.Add("1111")
>  tData.arr.Add("2222")
>  arrData.Add(tData)
>
>  tData.arr = New ArrayList
>  tData.str = "かきくけこ"
>  tData.arr.Add("3333")
>  tData.arr.Add("4444")
>  arrData.Add(tData)
>
>
> ここで、"あいうえお"という値を取得するときに、
>  arrData(0).str
> とすると、「遅延バインディングを使用できません」というエラーになります。
> どのようにして値を取得すればいいのでしょうか?
> お教え下さい。
ArrayListの要素はObject型なのでSTRUCT_DATA型にキャストする必要があります。
DirectCast(arrData.Item(0), STRUCT_DATA).str
これでstrの値を取得できます。
Koyamaさん、ありがとうございました。
お教え頂いた方法で値を取得することができました。
解決済み!

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