Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Digunakan untuk mendeklarasikan delegasi. Delegasi adalah jenis referensi yang mengacu pada Shared metode jenis atau ke metode instans objek. Prosedur apa pun dengan parameter yang cocok dan jenis pengembalian dapat digunakan untuk membuat instans kelas delegasi ini. Prosedur kemudian dapat dipanggil dengan menggunakan instans delegasi.
Sintaksis
[ <attrlist> ] [ accessmodifier ] _
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]
Bagian
| Istilah | Definisi |
|---|---|
attrlist |
Fakultatif. Daftar atribut yang berlaku untuk delegasi ini. Beberapa atribut dipisahkan oleh koma. Anda harus mengapit Daftar Atribut dalam tanda kurung sudut ("<" dan ">"). |
accessmodifier |
Fakultatif. Menentukan kode apa yang dapat mengakses delegasi. Dapat berupa salah satu hal berikut: - Publik. Kode apa pun yang dapat mengakses elemen yang menyatakan delegasi dapat mengaksesnya. - Terlindungi. Hanya kode dalam kelas delegasi atau kelas turunan yang dapat mengaksesnya. - Teman. Hanya kode dalam rakitan yang sama yang dapat mengakses delegasi. - Swasta. Hanya kode dalam elemen yang menyatakan delegasi yang dapat mengaksesnya. - Teman yang Dilindungi Hanya kode dalam kelas delegasi, kelas turunan, atau rakitan yang sama yang dapat mengakses delegasi. - Dilindungi Privat Hanya kode dalam kelas delegasi atau di kelas turunan dalam rakitan yang sama yang dapat mengakses delegasi. |
Shadows |
Fakultatif. Menunjukkan bahwa delegasi ini mendelegasikan ulang dan menyembunyikan elemen pemrograman bernama identik, atau sekumpulan elemen yang kelebihan beban, di kelas dasar. Anda dapat membayangi segala jenis elemen yang dideklarasikan dengan jenis lain. Elemen bayangan tidak tersedia dari dalam kelas turunan yang membayanginya, kecuali dari tempat elemen bayangan tidak dapat diakses. Misalnya, jika Private elemen membayangi elemen kelas dasar, kode yang tidak memiliki izin untuk mengakses Private elemen mengakses elemen kelas dasar sebagai gantinya. |
Sub |
Opsional, tetapi salah satu Sub atau Function harus muncul. Menyatakan prosedur ini sebagai prosedur delegasi Sub yang tidak mengembalikan nilai. |
Function |
Opsional, tetapi salah satu Sub atau Function harus muncul. Menyatakan prosedur ini sebagai prosedur delegasi Function yang mengembalikan nilai. |
name |
Dibutuhkan. Nama jenis delegasi; mengikuti konvensi penamaan variabel standar. |
typeparamlist |
Fakultatif. Daftar parameter jenis untuk delegasi ini. Beberapa parameter jenis dipisahkan oleh koma. Secara opsional, setiap parameter jenis dapat dideklarasikan varian dengan menggunakan In dan Out pengubah generik. Anda harus menyertakan Daftar Tipe dalam tanda kurung dan memperkenalkannya dengan Of kata kunci. |
parameterlist |
Fakultatif. Daftar parameter yang diteruskan ke prosedur saat dipanggil. Anda harus mengapit Daftar Parameter dalam tanda kurung. |
type |
Diperlukan jika Anda menentukan Function prosedur. Jenis data dari nilai yang dikembalikan. |
Komentar
Pernyataan menentukan Delegate parameter dan jenis pengembalian kelas delegasi. Prosedur apa pun dengan parameter yang cocok dan jenis pengembalian dapat digunakan untuk membuat instans kelas delegasi ini. Prosedur kemudian dapat dipanggil dengan menggunakan instans delegasi, dengan memanggil metode delegasi Invoke .
Delegasi dapat dideklarasikan di tingkat namespace, modul, kelas, atau struktur, tetapi tidak dalam prosedur.
Setiap kelas delegasi mendefinisikan konstruktor yang diteruskan spesifikasi metode objek. Argumen ke konstruktor delegasi harus menjadi referensi ke metode, atau ekspresi lambda.
Untuk menentukan referensi ke metode, gunakan sintaks berikut:
AddressOf [expression.]methodname
Jenis waktu kompilasi expression harus berupa nama kelas atau antarmuka yang berisi metode nama yang ditentukan yang tanda tangannya cocok dengan tanda tangan kelas delegasi.
methodname dapat berupa metode bersama atau metode instans.
methodname bukan pilihan, bahkan jika Anda membuat delegasi untuk metode bawaan kelas.
Untuk menentukan ekspresi lambda, gunakan sintaks berikut:
Function ([parm Sebagai type, parm2 Sebagai type2, ...]) expression
Penandatangan fungsi harus sesuai dengan tipe delegasi. Untuk informasi selengkapnya tentang ekspresi lambda, lihat Ekspresi Lambda.
Untuk informasi selengkapnya tentang delegasi, lihat Delegasi.
Contoh
Contoh berikut menggunakan Delegate pernyataan untuk mendeklarasikan delegasi untuk beroperasi pada dua angka dan mengembalikan angka. Metode ini DelegateTest mengambil instans delegasi jenis ini dan menggunakannya untuk beroperasi pada pasangan angka.
Delegate Function MathOperator(
ByVal x As Double,
ByVal y As Double
) As Double
Function AddNumbers(
ByVal x As Double,
ByVal y As Double
) As Double
Return x + y
End Function
Function SubtractNumbers(
ByVal x As Double,
ByVal y As Double
) As Double
Return x - y
End Function
Sub DelegateTest(
ByVal x As Double,
ByVal op As MathOperator,
ByVal y As Double
)
Dim ret As Double
ret = op.Invoke(x, y) ' Call the method.
MsgBox(ret)
End Sub
Protected Sub Test()
DelegateTest(5, AddressOf AddNumbers, 3)
DelegateTest(9, AddressOf SubtractNumbers, 3)
End Sub
Lihat juga
- Operator AddressOf
- Dari
- Delegasi
- Cara: Menggunakan Kelas Generik
- Jenis Generik di Visual Basic
- Kovariansi dan Kontravariansi
- Di
- Keluar