VB.NETにてGenericが使えないときのtips
問題
.NET Framework 1.1 VB.NETで開発するとGenericが使えないので、*1
コレクションを使いたいときはキャストしてあげないといけない。
しかしVB.NETでキャストを書くと
Dim order As Order = CType(OrderList(i),Order)
っていう風に長くなるので量が多いとめんどう。
対策
ArrayListを拡張することで毎回キャストする手間が省ける
OrderList
Option Explicit On Option Strict On Public Class OrderList Inherits ArrayList Default Public Shadows ReadOnly Property Item(ByVal index As Integer) As Order Get Return CType(MyBase.Item(index), Order) End Get End Property Public Shadows Function Add(ByVal value As Order) As Integer Return MyBase.Add(value) End Function Public Shadows Sub Insert(ByVal index As Integer, ByVal value As Order) MyBase.Insert(index, value) End Sub End Class
対策後
Dim order As Order = OrderList(i)
短くなったね
まとめ
Genericがない世界なんて嫌いだ。
*1:.NET Framework 2.0から使える