• 締切済み

VBのクラスについて質問です。

VBのクラスについて質問です。 Dicitionaryに格納した値を取得するとき、下記の2つの方法があると思います。 (どちらの方法でも同じ値が取得されるかと思います。)  (1)オブジェクト("xxx")  (2)オブジェクト.Item("xxx") 本題ですが、独自のクラスに(1)のメソッドを実装するためにはどうすればよいでしょうか?

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

VB6ですと 『Microsoft Scripting Runtime』を参照設定しておいて 新規のクラスを追加 冒頭の宣言部分に Dim oDic as Dictionaly Class1のInitializeイベントで Private Sub Class1_Initialize()   Set oDic = New Dictionaly End Sub プロパティ Itemを生成 Public Property Get Item( sKey as String )   Item = oDic( sKey ) End Property 追加メソッド Addを生成 Public Sub Add( sKey as String, newVal )   oDic.Add sKey, newVal End Sub として AddまたはItemのコード部分にカーソルをおいて VBのメニューで ツール > プロシージャの属性 を実行 名前を Itemに変更 『詳細(V)』を押して プロシージャID(I)を『(既定値)』に変更 といった具合で出来そうです 重複データ(キー)などがあった場合などのエラー処理も実装する必要があると思います ・・・

回答No.1

VB って、VBA や VB6 じゃなくて VB.NET のことでよいですか? Visual Studio 2008 の VB で試してみましたが、↓のようにすればよいみたいです。 Public Class Class1 Private mdic As Dictionary(Of String, String) Public Sub New() mdic = New Dictionary(Of String, String) End Sub Public Sub Add(ByVal strKey As String, ByVal strValue As String) mdic.Add(strKey, strValue) End Sub Default Public ReadOnly Property Item(ByVal strKey As String) As String Get Item = mdic(strKey) End Get End Property End Class ------------------------------------------------------------------------- Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim c1 As New Class1 c1.Add("Key1", "Test1") Debug.Print(c1("Key1")) End Sub End Class

sanbosan
質問者

お礼

ご回答ありがとうございます。 言葉足らずで申し訳ありません VB.NETではなく、VB6でのやり方を探しております。

関連するQ&A