雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

ジェネリックの型制約

C# の場合、ジェネリック宣言で型パラメータに制約を付ける際は、

public void Hoge<T>(T value) where T : IComparable<T> {
  ...
}

の様に、 where 句を使って宣言します。
一方、 VB の場合は、

Public Sub Hoge(Of T As IComparable(Of T))(ByVal value As T)
  ...
End Sub

の様に、 As 句で宣言します。
制約を複数宣言する場合は、C# であれば、

public void Hoge<T>(T value) where T : IComparable<T>, IEnumerable<T> {
  ...
}

と、単純にカンマ区切りで宣言すれば OK 。
VB の場合は、

Public Sub Hoge(Of T As { IComparable(Of T), IEnumerable(Of T) })(ByVal value As T)
  ...
End Sub

と、型リストを指定すれば OK です。
…… VB での複数指定の方法を知らなかったので、勉強になりました。
# コード例がメソッドなのはご愛嬌。 :p