独自コレクションクラスを作成する VB.NET2005


VB Tips And Sample(HOME)(VB.NET Sample インデックス)

VB6だとウィザードで知らない間に作ることができたコレクションクラス(配列クラス)だが、VB2005だと自分で作る必要がある。
といっても、その手の質問が出るだろうということでMSもチュートリアルをここで公開している。
それを参考に簡単なものを作ってみた(チュートリアルで充分という方はご愛嬌)。
ついでに継承クラスの復習になるはず。

’これが今回配列の項目として作りたいもの 合計4項目の文字列を配列化したい。これができると独自の配列クラスが作れるので便利
Public Class MyItem
    Public ID As String
    Public Name As String
    Public BDay As String
    Public Adre As String
End Class




’こちらが前の4項目の文字列を配列にするクラス
Public Class Collec
    Inherits System.Collections.CollectionBase 'コレクションクラスを継承している

’MSDNの「CollectionBaseの明示的インターフェイスの実装」で紹介されているAddを実装する。
    Public Sub add(ByVal Citem As MyItem)
        List.Add(Citem) ’追加する
    End Sub

MSのコピペ これも「CollectionBaseの明示的インターフェイスの実装」=要するに自分(手前)で書いといて!ということ。
    Public Sub remove(ByVal index As Integer)
        If index > Count - 1 Or index < 0 Then
            ' If no widget exists, a messagebox is shown and the operation is 
            ' cancelled.
            System.Windows.Forms.MessageBox.Show("Index not valid!")
        Else
            ' Invokes the RemoveAt method of the List object.
            List.RemoveAt(index)
        End If

    End Sub

これも「CollectionBaseの明示的インターフェイスの実装」で紹介されている「item」の実装。
MSの例では読み取り専用として作られていたが、ここでは書き込みも可とする

    Public Property Item(ByVal index As Integer) As MyItem
        Get
            Return CType(List.Item(index), MyItem)
           'このListは「CollectionBaseのプロテクトプロパティー。他にInnerList というArrayListもある。」
           '要するに継承「親の七光り=継承もとのクラスの機能を引き継いで実装できる」というわけだ
           '便利の一言に尽きる。

        End Get
        Set(ByVal value As MyItem)
            List.Item(index) = value
        End Set
    End Property


End Class



「MyItem」クラスを配列化したのが「Collec」クラス。反対にコレクションの項目は「MyItem」を書き換えれば変更できるということになる。

使い方は、


Public Class Form1
    Dim Myurl As New Collec
      Dim it As New MyItem
      it.ID = "1"
      it.Name = "balard"
      it.BDay="20071020"
      it.Adre="NewYork"
      Myurl.add(it)
      it = Nothing
      '他にも 'Myurl.Count’Countは書いていないのに「継承」したので使える。「CollectionBaseのパブリック プロパティ」
      'Myurl.Item(i).Name = " 'これはじぶんでつくったやつ"

      etc etc.................... 



VB Tips And Sample(HOME)(VB.NET Sample インデックス)