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

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)