サーチ…


ジェネリッククラスを作成する

ジェネリック型は、異なるデータ型に対して同じ機能割り当てにアクセスできるように作成されています。

Public Class SomeClass(Of T)
    Public Sub doSomething(newItem As T)
        Dim tempItem As T
        ' Insert code that processes an item of data type t.
    End Sub
End Class

ジェネリッククラスのインスタンス

異なる型の同じクラスのインスタンスを作成することで、そのクラスのインタフェースは与えられた型に応じて変化します。

Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)

ここに画像の説明を入力

「ジェネリック」クラスを定義する

ジェネリッククラスは、後で指定された型に適応するクラスであり、同じ機能をさまざまな型に提供することができます。

この基本例では、汎用クラスが作成されます。これには汎用型Tを使用するサブがあります。このクラスをプログラミングするとき、Tの型はわかりません。この場合、TはObjectのすべての特性を持ちます。

Public Class SomeClass(Of T)
    Public Sub doSomething(newItem As T)
        Dim tempItem As T
        ' Insert code that processes an item of data type t.
    End Sub
End Class

ジェネリッククラスを使用する

この例では、SomeClassクラスのインスタンスが2つ作成されています。与えられたタイプに応じて、2つのインスタンスは異なるインターフェースを持ちます:

Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)

ここに画像の説明を入力 ここに画像の説明を入力

最も有名な汎用クラスはList(of)

指定可能な型を制限する

SomeClassの新しいインスタンスに渡される可能な型は、SomeBaseClassを継承しなければなりません。これはインターフェースでもあります。 SomeBaseClassの特性は、このクラス定義内でアクセス可能です。

Public Class SomeClass(Of T As SomeBaseClass)
    Public Sub DoSomething(newItem As T)
        newItem.DoSomethingElse()
        ' Insert code that processes an item of data type t.
    End Sub
End Class

Public Class SomeBaseClass
    Public Sub DoSomethingElse()
    End Sub
End Class

指定された型の新しいインスタンスを作成する

ジェネリック型の新しいintanceの作成は、コンパイル時に行うことができます。

Public Class SomeClass(Of T As {New})
    Public Function GetInstance() As T
        Return New T
    End Function
End Class

または限られたタイプの場合:

Public Class SomeClass(Of T As {New, SomeBaseClass})
    Public Function GetInstance() As T
        Return New T
    End Function
End Class

Public Class SomeBaseClass
End Class

baseClass(指定されていない場合はObject)には、コンストラクターの少ないパラメーターが必要です。

これは、 リフレクションによって実行時に行うこともできます



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow