Pernyataan Operator
Mendeklarasikan simbol operator, operand, dan kode yang menentukan prosedur operator pada kelas atau struktur.
Sintaks
[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ]
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
[ statements ]
[ statements ]
Return returnvalue
[ statements ]
End Operator
Generator
attrlist
Opsional. Lihat Daftar Atribut.
Public
Harus diisi. Menunjukkan bahwa prosedur operator ini memiliki akses Publik.
Overloads
Opsional. Lihat Kelebihan Beban.
Shared
Harus diisi. Menunjukkan bahwa prosedur operator ini adalah prosedur Bersama.
Shadows
Opsional. Lihat Bayangan.
Widening
Diperlukan untuk operator konversi kecuali Anda menentukan Narrowing
. Menunjukkan bahwa prosedur operator ini mendefinisikan konversi Pelebaran. Lihat "Konversi Pelebaran dan Penyempitan" di halaman Bantuan ini.
Narrowing
Diperlukan untuk operator konversi kecuali Anda menentukan Widening
. Menunjukkan bahwa prosedur operator ini mendefinisikan konversi Penyempitan. Lihat "Konversi Pelebaran dan Penyempitan" di halaman Bantuan ini.
operatorsymbol
Harus diisi. Simbol atau pengidentifikasi operator yang ditentukan prosedur operator ini.
operand1
Harus diisi. Nama dan jenis operand tunggal dari operator tunggal (termasuk operator konversi) atau operand kiri dari operator biner.
operand2
Diperlukan untuk operator biner. Nama dan jenis operand kanan dari operator biner.
operand1
dan operand2
memiliki sintaks berikut:
[ ByVal ] operandname [ As operandtype ]
Bagian | Deskripsi |
---|---|
ByVal |
Opsional, tetapi mekanisme passing harus ByVal. |
operandname |
Harus diisi. Nama variabel yang mewakili operand ini. Lihat Nama Elemen yang Dideklarasikan. |
operandtype |
Opsional kecuali Option Strict adalah On . Jenis data operand ini. |
type
Opsional kecuali Option Strict
adalah On
. Jenis data nilai yang ditampilkan prosedur operator.
statements
Opsional. Blok pernyataan yang dijalankan prosedur operator.
returnvalue
Harus diisi. Nilai yang ditampilkan prosedur operator ke kode panggilan.
End
Operator
Harus diisi. Mengakhiri definisi prosedur operator ini.
Keterangan
Anda hanya dapat menggunakan Operator
di kelas atau struktur. Ini berarti konteks deklarasi untuk operator tidak boleh berupa file sumber, namespace, modul, antarmuka, prosedur, atau blok. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Default.
Semua operator harus Public Shared
. Anda tidak dapat menentukan ByRef
, Optional
, atau ParamArray
untuk salah satu operand.
Anda tidak dapat menggunakan simbol operator atau pengidentifikasi untuk menahan nilai yang dikembalikan. Anda harus menggunakan pernyataan Return
, dan itu harus menentukan nilai. Sejumlah pernyataan Return
dapat muncul di mana saja dalam prosedur.
Menentukan operator dengan cara ini disebut kelebihan beban operator, apakah Anda menggunakan kata kunci Overloads
atau tidak. Tabel berikut mencantumkan operator yang bisa Anda tentukan.
Jenis | Operator |
---|---|
Unary | + , - , IsFalse , IsTrue , Not |
Biner | + , - , * , / , \ , & , ^ , >> , << , = , <> , > , >= , < , <= , And , Like , Mod , Or , Xor |
Konversi (tunggal) | CType |
Perhatikan bahwa operator =
dalam daftar biner adalah operator perbandingan, bukan operator penugasan.
Ketika Anda menentukan CType
, Anda harus menentukan Widening
atau Narrowing
.
Pasangan yang Cocok
Anda harus menentukan operator tertentu sebagai pasangan yang cocok. Jika Anda menentukan salah satu operator dari pasangan tersebut, Anda juga harus menentukan yang lain. Pasangan yang cocok adalah sebagai berikut:
=
dan<>
>
dan<
>=
dan<=
IsTrue
danIsFalse
Pembatasan Jenis Data
Setiap operator yang Anda tentukan harus melibatkan kelas atau struktur tempat Anda menentukannya. Ini berarti bahwa kelas atau struktur harus muncul sebagai jenis data berikut:
Pengoperasi operator tunggal.
Setidaknya salah satu operand dari operator biner.
Baik operand atau jenis yang ditampilkan dari operator konversi.
Operator tertentu memiliki batasan jenis data tambahan, sebagai berikut:
Jika Anda menentukan operator
IsTrue
danIsFalse
, keduanya harus menampilkan jenisBoolean
.Jika Anda menentukan operator
<<
dan>>
, keduanya harus menentukan jenisInteger
untukoperandtype
darioperand2
.
Jenis yang ditampilkan tidak harus sesuai dengan jenis salah satu operand. Misalnya, operator perbandingan seperti =
atau <>
dapat menampilkan Boolean
meskipun tidak ada operand yang Boolean
.
Operator Logis dan Bitwise
Operator And
, Or
, Not
, dan Xor
dapat melakukan operasi logis atau bitwise dalam Visual Basic. Namun, jika Anda menentukan salah satu operator ini pada kelas atau struktur, Anda hanya dapat menentukan operasi bitwise-nya.
Anda tidak dapat menentukan operator AndAlso
secara langsung dengan pernyataan Operator
. Namun, Anda dapat menggunakan AndAlso
jika Anda telah memenuhi kondisi berikut:
Anda telah menentukan
And
pada jenis operand yang sama dengan yang ingin Anda gunakan untukAndAlso
.Definisi
And
Anda menampilkan jenis yang sama dengan kelas atau struktur tempat Anda mendefinisikannya.Anda telah menentukan operator
IsFalse
pada kelas atau struktur tempat Anda menentukanAnd
.
Demikian pula, Anda dapat menggunakan OrElse
jika Anda telah menentukan Or
pada operand yang sama, dengan jenis yang ditampilkan dari kelas atau struktur, dan Anda telah menentukan IsTrue
pada kelas atau struktur.
Memperluas dan Mempersempit Konversi
Konversi pelebaran selalu berhasil pada run time, sementara konversi penyempitan dapat gagal pada run time. Untuk informasi selengkapnya, lihat Konversi Pelebaran dan Penyempitan.
Jika Anda menyatakan prosedur konversi menjadi Widening
, kode prosedur Anda tidak boleh menghasilkan kegagalan apa pun. Ini berarti sebagai berikut:
Ini harus selalu menampilkan nilai yang valid dari jenis
type
.Ini harus menangani semua kemungkinan pengecualian dan kondisi kesalahan lainnya.
Ini harus menangani setiap kesalahan yang dikembalikan dari prosedur apa pun yang dipanggilnya.
Jika ada kemungkinan bahwa prosedur konversi mungkin tidak berhasil, atau dapat menyebabkan pengecualian yang tidak tertangani, Anda harus menyatakannya menjadi Narrowing
.
Contoh
Contoh kode berikut menggunakan pernyataan Operator
untuk menentukan kerangka struktur yang mencakup prosedur operator untuk operator And
, Or
, IsFalse
, dan IsTrue
. And
dan Or
masing-masing mengambil dua operand dari jenis abc
dan menampilkan jenis abc
. IsFalse
dan IsTrue
masing-masing mengambil satu operand jenis abc
dan menampilkan Boolean
. Definisi ini memungkinkan kode panggilan untuk menggunakan And
, AndAlso
, Or
, dan OrElse
dengan operan jenis abc
.
Public Structure abc
Dim d As Date
Public Shared Operator And(ByVal x As abc, ByVal y As abc) As abc
Dim r As New abc
' Insert code to calculate And of x and y.
Return r
End Operator
Public Shared Operator Or(ByVal x As abc, ByVal y As abc) As abc
Dim r As New abc
' Insert code to calculate Or of x and y.
Return r
End Operator
Public Shared Operator IsFalse(ByVal z As abc) As Boolean
Dim b As Boolean
' Insert code to calculate IsFalse of z.
Return b
End Operator
Public Shared Operator IsTrue(ByVal z As abc) As Boolean
Dim b As Boolean
' Insert code to calculate IsTrue of z.
Return b
End Operator
End Structure
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk