ジェネリッククラスは、クラスを利用する側で型を定義しなくても、複数のデータ型に対応したクラスです。
<構文>
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 ClassClass MyGenericClass2(Of T As Class) '制約:Tはクラス End ClassClass MyGenericClass3(Of T As New) '制約:Tはインスタンス化可能 End ClassClass MyGenericClass4(Of T As OtherClass) '制約:TはOtherClassクラスを継承 End ClassClass MyGenericClass5(Of T As IMyInterface) '制約:TはIMyInterfaceインターフェイスを実装 End ClassClass MyGenericClass6(Of U, T As U) '制約:Tは別の型パラメータUを継承 End ClassClass MyGenericClass7(Of T As {OtherClass(Of T), IDisposable, New}, F As Class) Implements IDisposable '制約:T,Fは別々のクラス End ClassClass thisClass(Of t As {IComparable, IDisposable, Class, New}) 'あるクラス End ClassClass OtherClass 'あるクラス End ClassClass OtherClass(Of T) 'あるクラス End ClassInterface IMyInterface 'あるインターフェイス End Interface