수색…


제네릭 클래스 만들기

제네릭 형식은 다른 데이터 형식에 대해 동일한 기능을 액세스 할 수 있도록 조정됩니다.

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는 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 개의 인스턴스가 다른 인터페이스를 갖습니다.

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