• ベストアンサー

ArrayListに格納したクラス内のメンバの呼び出し方法(VB)

お世話になります。VB2003でご質問があります。 通常Arryalistでは下記例1のように使用するのが一般的だと思うのですが、例2のようにArryaListにクラスを追加し、その中のメンバを呼び出すにはどのようにコーディングすればよいのでしょうか? コメントのコンパイルエラー箇所の部分です。 お手数ですが、ご教授よろしくお願いいたします。 ******************************************* (例1) Dim Test as new ArrayList Test.ADD("テスト") console.writeline(test(0)) ******************************************* ******************************************* (例2) Public Class A public strA as string public sub subTest() strA = "おはよう" end sub End Class Public Class B Dim a as new ArrayList a.Add(new A) a(0).subTest '--コンパイルエラー箇所 console.writeline(a(0).strA) '--コンパイルエラー箇所 End Class *******************************************

質問者が選んだベストアンサー

  • ベストアンサー
  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.2

ArrayListから取り出したものはすべてオブジェクト型です 適切な型にキャストしてから使用してください Dim a as new ArrayList a.Add(new A) CType(a(0), A).subTest console.writeline(CType(a(0), A).strA)

20centuryboy
質問者

お礼

すばやいご回答ありがとうございます。 ◎ArrayList(オブジェクト型)⇒適切な型にキャストしてから使用する、ピンポイントのご回答でした。 Dim b as A Dim a as new ArrayList a.add(new A) b = a(0) b.subTest console.writeline(b.strA) これでもご指摘頂いた、回答と同様ですね。 なかなかWebを調べても、質問内容と同件のArrayListの使用例がなかったところで困っていました。 大変助かりました。どうもありがとうございました。

その他の回答 (1)

回答No.1

.NET 1.1でDirectCastに対応しているかわからないけど, http://okwave.jp/qa3396774.html と同じ話かな? ちなみにGeneric.Listは.NET 2.0以降でないと使えなかったと思う #できればClassBもちゃんとPublic Sub hoge() ~ End Subとか書いてほしい

20centuryboy
質問者

お礼

すばやいご回答ありがとうございます。 参考URLと同件の質問でした。 DirectCastやGenericListなど参考になりました。 ※ClassB内にプロシージャを記載するのが漏れてましたね。ご指摘ありがとうございます。

関連するQ&A