ジェネリッククラスの定義

ジェネリッククラスは、クラスを利用する側で型を定義しなくても、複数のデータ型に対応したクラスです。
<構文>
Class クラス名(Of T)
End Class

■C#定義
 class MyGenericClass1<T> where T : struct {
  // 制約:Tは構造体
 }
class MyGenericClass2<T> where T : class {
  // 制約:Tはクラス
 }
 class MyGenericClass3<T> where T : new() {
  // 制約:Tはインスタンス化可能
 }
class MyGenericClass4<T> where T : MyOtherClass {
  // 制約:TはMyOtherClassクラスを継承
 }
 class MyGenericClass5<T> where T : IMyInterface {
  // 制約:TはIMyInterfaceインターフェイスを実装
 }
class MyGenericClass6<T, U> where T : U {
  // 制約:Tは別の型パラメータUを継承
 }
 class MyGenericClass7<T, F> : IDisposable
        where T : MyOtherClass<F>, IDisposable, new()
        where F : class
 {
  // 制約:T,Fは別々のクラス
 }
 class MyOtherClass {
  // あるクラス
 }
 interface IMyInterface {
  // あるインターフェイス
 }

 

■VB.NET定義
Class MyGenericClass1(Of t As Structure)
    ' 制約:Tは構造体
End Class
Class MyGenericClass2(Of T As Class)
    '制約:Tはクラス
End Class
Class MyGenericClass3(Of T As New)
    '制約:Tはインスタンス化可能
End Class
Class MyGenericClass4(Of T As OtherClass)
    '制約:TはOtherClassクラスを継承
End Class
Class MyGenericClass5(Of T As IMyInterface)
    '制約:TはIMyInterfaceインターフェイスを実装
End Class
Class MyGenericClass6(Of U, T As U)
    '制約:Tは別の型パラメータUを継承
End Class
Class MyGenericClass7(Of T As {OtherClass(Of T), IDisposable, New}, F As Class)
    Implements IDisposable
    '制約:T,Fは別々のクラス
End Class
Class thisClass(Of t As {IComparable, IDisposable, Class, New})
 'あるクラス
End Class
Class OtherClass
    'あるクラス
End Class
Class OtherClass(Of T)
    'あるクラス
End Class
Interface IMyInterface
    'あるインターフェイス
End Interface