ジェネリックを使ってみる[キャストが不要に!]

メモ:  Category:vb

VB2005を使うことになり、いろいろ調べていたのですが、その中で気になった機能にジェネリックがあります。

ジェネリックを見て最初にイメージしたものは、C++のSTL(スタンダード・テンプレート・ライブラリ)です。記述方法は違うものの、考え方はSTLと同じようです。

ジェネリックは、型に依存しない設計で、実際に使うときに型を指定します。例えば、同じ処理を行うためにそれぞれの型用にクラスを作成するのではなく、汎用的なクラスにあとから型を充てこみます。

List(Of T)を使う

よく使うと思われるList(ジェネリッククラス)を使ってみます。

Dim lst As New List(Of String)
lst.Add("bnote")
lst.Add("bbb")
lst.Add("hoge")

Dim strBuff as String
strBuff = lst.item(0)
' strBuff = lst(0)

ArrayListを使用するとObject型で返されるためキャストします。しかし、ジェネリックの場合指定した型(上記例の場合、String)として返されるためキャストする必要がありません。

次の例は、ArrayListを使った場合です。

Dim lst As New ArrayList
lst.Add("bnote")
lst.Add("bbb")
lst.Add("hoge")

Dim strBuff as String
strBuff = DirectCast(lst.item(0),String)
' strBuff = DirectCast(lst(0),String)

bluenote by BBB