제네릭 프로그래밍 요소의 형식 매개 변수를 지정합니다. 여러 매개 변수는 쉼표로 구분됩니다. 다음은 한 형식 매개 변수에 대한 구문입니다.
문법
[genericmodifier] typename [ As constraintlist ]
부분
| 기간 | 정의 |
|---|---|
genericmodifier |
선택 사항입니다. 제네릭 인터페이스 및 대리자에서만 사용할 수 있습니다. In 키워드를 사용하여 Out 키워드 또는 반공변을 사용하여 형식 공변을 선언할 수 있습니다. 공변성 및 반공변성 참조 |
typename |
필수 사항입니다. 형식 매개 변수의 이름입니다. 이 자리 표시자는 해당 형식 인수에서 제공하는 정의된 형식으로 대체됩니다. |
constraintlist |
선택 사항입니다. 에 대해 제공할 수 있는 데이터 형식을 제한하는 요구 사항 목록입니다 typename. 여러 제약 조건이 있는 경우 중괄호({ })로 묶고 쉼표로 구분합니다.
As 키워드를 사용하여 제약 조건 목록을 도입해야 합니다. 목록의 시작 부분에 한 번만 사용합니다 As . |
비고
모든 제네릭 프로그래밍 요소는 하나 이상의 형식 매개 변수를 사용해야 합니다. 형식 매개 변수는 클라이언트 코드가 제네릭 형식의 인스턴스를 만들 때 지정하는 특정 형식( 생성된 요소)에 대한 자리 표시자입니다. 제네릭 클래스, 구조체, 인터페이스, 프로시저 또는 대리자를 정의할 수 있습니다.
제네릭 형식을 정의하는 시기에 대한 자세한 내용은 Visual Basic의 제네릭 형식을 참조하세요. 형식 매개 변수 이름에 대한 자세한 내용은 선언된 요소 이름을 참조하세요.
규칙
괄호. 형식 매개 변수 목록을 제공하는 경우 괄호로 묶어야 하며 Of 키워드를 사용하여 목록을 도입해야 합니다. 목록의 시작 부분에 한 번만 사용합니다
Of.제약 조건. 형식 매개 변수의 제약 조건 목록에는 모든 조합에 다음 항목이 포함될 수 있습니다.
모든 수의 인터페이스. 제공된 형식은 이 목록의 모든 인터페이스를 구현해야 합니다.
최대 하나의 클래스. 제공된 형식은 해당 클래스에서 상속되어야 합니다.
New키워드. 제공된 형식은 제네릭 형식이 액세스할 수 있는 매개 변수가 없는 생성자를 노출해야 합니다. 이는 하나 이상의 인터페이스로 형식 매개 변수를 제한하는 경우에 유용합니다. 인터페이스를 구현하는 형식이 반드시 생성자를 노출하는 것은 아니며 생성자의 액세스 수준에 따라 제네릭 형식 내의 코드가 해당 생성자에 액세스하지 못할 수 있습니다.Class키워드 또는 키워드입니다Structure. 이 키워드는Class제네릭 형식 매개 변수를 제한하여 전달된 모든 형식 인수가 참조 형식(예: 문자열, 배열 또는 대리자) 또는 클래스에서 만든 개체가 되도록 합니다. 키워드는Structure제네릭 형식 매개 변수를 제한하여 값 형식으로 전달된 모든 형식 인수(예: 구조체, 열거형 또는 기본 데이터 형식)를 요구합니다. 둘 다Class포함Structure할 수 없으며 동일한constraintlist항목에 포함할 수 없습니다.
제공된 형식은 포함하는
constraintlist모든 요구 사항을 충족해야 합니다.각 형식 매개 변수의 제약 조건은 다른 형식 매개 변수에 대한 제약 조건과 독립적입니다.
행동
Compile-Time 대체. 제네릭 프로그래밍 요소에서 생성된 형식을 만들 때 각 형식 매개 변수에 대해 정의된 형식을 제공합니다. Visual Basic 컴파일러는 제네릭 요소 내의
typename모든 발생에 대해 형식을 제공한 대체합니다.제약 조건이 없습니다. 형식 매개 변수에 대한 제약 조건을 지정하지 않으면 코드는 해당 형식 매개 변수에 대한 개체 데이터 형식 에서 지원하는 작업 및 멤버로 제한됩니다.
예제 1
다음 예제에서는 사전에 새 항목을 추가하는 스켈레톤 함수를 포함하여 제네릭 사전 클래스의 기본 정의를 보여줍니다.
Public Class dictionary(Of entryType, keyType As {IComparable, IFormattable, New})
Public Sub add(ByVal et As entryType, ByVal kt As keyType)
Dim dk As keyType
If kt.CompareTo(dk) = 0 Then
End If
End Sub
End Class
예제 2
dictionary 제네릭이므로 이를 사용하는 코드는 각각 동일한 기능을 가지지만 다른 데이터 형식에서 작동하는 다양한 개체를 만들 수 있습니다. 다음 예제에서는 항목 및 Integer 키를 사용하여 개체 String 를 dictionary 만드는 코드 줄을 보여 있습니다.
Dim dictInt As New dictionary(Of String, Integer)
예제 3
다음 예제에서는 앞의 예제에서 생성한 동일한 기본 정의를 보여줍니다.
Public Class dictionary
Public Sub Add(ByVal et As String, ByVal kt As Integer)
Dim dk As Integer
If kt.CompareTo(dk) = 0 Then
End If
End Sub
End Class
참고하십시오
.NET