Daftar Tipe (Visual Basic)
Menentukan parameter jenis untuk elemen pemrograman generik. Parameter jamak dipisahkan oleh koma. Berikut ini adalah sintaks untuk satu jenis parameter.
Sintaks
[genericmodifier] typename [ As constraintlist ]
Generator
Term | Definisi |
---|---|
genericmodifier |
Opsional. Hanya dapat digunakan dalam antarmuka generik dan delegasi. Anda dapat mendeklarasikan kovarian jenis dengan menggunakan kata kunci Keluar atau kontravarian dengan menggunakan kata kunci Masuk. Lihat Kovarian dan Kontravarian. |
typename |
Harus diisi. Nama parameter jenis. Ini adalah tempat penampung, untuk digantikan oleh jenis yang ditentukan yang disediakan oleh argumen jenis yang sesuai. |
constraintlist |
Opsional. Daftar persyaratan yang membatasi jenis data yang dapat disediakan untuk typename . Jika Anda memiliki beberapa batasan, sertakan dalam kurung kurawal ({ } ) dan pisahkan dengan koma. Anda harus menuliskan daftar batasan dengan kata kunci As. Anda hanya menggunakan As sekali, di awal daftar. |
Keterangan
Setiap elemen pemrograman generik harus mengambil setidaknya satu parameter jenis. Parameter jenis adalah tempat penampung untuk jenis tertentu ( elemen yang dibangun) yang ditentukan kode klien saat membuat instans jenis generik. Anda dapat menentukan kelas, struktur, antarmuka, prosedur, atau delegasi generik.
Untuk informasi selengkapnya tentang kapan harus menentukan jenis generik, lihat Jenis Generik di Visual Basic. Untuk informasi selengkapnya tentang nama parameter jenis, lihat Nama Elemen yang Dinyatakan.
Aturan
Tanda Kurung. Jika Anda menyediakan daftar parameter jenis, Anda harus mengapitnya dalam tanda kurung, dan Anda harus memperkenalkan daftar dengan kata kunci Of. Anda hanya menggunakan
Of
sekali, di awal daftar.Batasan. Daftar batasan pada parameter jenis dapat menyertakan item berikut dalam kombinasi apa pun:
Sejumlah antarmuka. Jenis yang disediakan harus mengimplementasikan setiap antarmuka dalam daftar ini.
Paling banyak satu kelas. Jenis yang disediakan harus diwarisi dari kelas tersebut.
Kata kunci
New
. Jenis yang disediakan harus mengekspos konstruktor tanpa parameter yang dapat diakses oleh jenis generik Anda. Ini berguna jika Anda membatasi parameter jenis oleh satu atau lebih antarmuka. Jenis yang mengimplementasikan antarmuka tidak selalu mengekspos konstruktor, dan tergantung pada tingkat akses konstruktor, kode dalam jenis generik mungkin tidak dapat mengaksesnya.Baik kata kunci
Class
atau kata kunciStructure
. Kata kunciClass
membatasi parameter jenis generik untuk mengharuskan argumen jenis apa pun yang diteruskan ke dalamnya menjadi jenis referensi, misalnya string, array, atau delegasi, atau objek yang dibuat dari kelas. Kata kunciStructure
membatasi parameter jenis generik untuk mengharuskan argumen jenis apa pun yang diteruskan ke dalamnya menjadi jenis nilai, misalnya struktur, enumerasi, atau jenis data dasar. Anda tidak dapat menyertakanClass
danStructure
dalamconstraintlist
yang sama.
Jenis yang disediakan harus memenuhi setiap persyaratan yang Anda sertakan dalam
constraintlist
.Batasan pada setiap parameter jenis tidak bergantung pada batasan pada parameter jenis lain.
Perilaku
Substitusi Waktu-Kompilasi. Saat Anda membuat jenis yang dibangun dari elemen pemrograman generik, Anda menyediakan jenis yang ditentukan untuk setiap parameter jenis. Kompiler Visual Basic menggantikan jenis yang disediakan untuk setiap kemunculan
typename
dalam elemen generik.Tidak adanya Batasan. Jika Anda tidak menentukan batasan apa pun pada parameter jenis, kode Anda terbatas pada operasi dan anggota yang didukung oleh Jenis Data Objek untuk parameter jenis tersebut.
Contoh 1
Contoh berikut menunjukkan definisi kerangka kelas kamus generik, termasuk fungsi kerangka untuk menambahkan entri baru ke kamus.
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
Contoh 2
Karena dictionary
umum, kode yang menggunakannya dapat membuat berbagai objek darinya, masing-masing memiliki fungsionalitas yang sama tetapi bertindak pada jenis data yang berbeda. Contoh berikut menunjukkan baris kode yang membuat objek dictionary
dengan entri String
dan kunci Integer
.
Dim dictInt As New dictionary(Of String, Integer)
Contoh 3
Contoh berikut menunjukkan definisi kerangka yang setara yang dihasilkan oleh contoh sebelumnya.
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