Bagikan melalui


Pernyataan Operator

Mendeklarasikan simbol operator, operand, dan kode yang menentukan prosedur operator pada kelas atau struktur.

Sintaksis

[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ]
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
    [ statements ]
    [ statements ]
    Return returnvalue
    [ statements ]
End Operator

Bagian

attrlist
Fakultatif. Lihat Daftar Atribut.

Public
Dibutuhkan. Menunjukkan bahwa prosedur operator ini memiliki akses Publik .

Overloads
Fakultatif. Lihat Kelebihan Beban.

Shared
Dibutuhkan. Menunjukkan bahwa prosedur operator ini adalah prosedur Bersama .

Shadows
Fakultatif. Lihat Bayangan.

Widening
Diperlukan untuk operator konversi kecuali Anda menentukan Narrowing. Menunjukkan bahwa prosedur operator ini mendefinisikan konversi Widening . Lihat "Melebarkan dan Mempersempit Konversi" di halaman Bantuan ini.

Narrowing
Diperlukan untuk operator konversi kecuali Anda menentukan Widening. Menunjukkan bahwa prosedur operator ini mendefinisikan konversi Penyempitan . Lihat "Melebarkan dan Mempersempit Konversi" di halaman Bantuan ini.

operatorsymbol
Dibutuhkan. Simbol atau pengidentifikasi operator yang ditentukan prosedur operator ini.

operand1
Dibutuhkan. Nama dan jenis operand tunggal operator unary (termasuk operator konversi) atau operand kiri operator biner.

operand2
Diperlukan untuk operator biner. Nama dan jenis operand kanan operator biner.

operand1 dan operand2 memiliki sintaks dan bagian berikut:

[ ByVal ] operandname [ As operandtype ]

Bagian Deskripsi
ByVal Opsional, tetapi mekanisme passing harus ByVal.
operandname Dibutuhkan. Nama variabel yang mewakili operand ini. Lihat Nama Elemen yang Dideklarasikan.
operandtype Opsional kecuali Option Strict adalah On. Tipe data operand ini.

type
Opsional kecuali Option Strict adalah On. Jenis data nilai yang dikembalikan prosedur operator.

statements
Fakultatif. Blok pernyataan yang dijalankan prosedur operator.

returnvalue
Dibutuhkan. Nilai yang dikembalikan prosedur operator ke kode panggilan.

End Operator
Dibutuhkan. Mengakhiri definisi prosedur operator ini.

Komentar

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 Bawaan.

Semua operator harus Public Shared. Anda tidak dapat menentukan ByRef, Optional, atau ParamArray untuk salah satu operand.

Anda tidak dapat menggunakan simbol atau pengidentifikasi operator untuk menyimpan nilai pengembalian. Anda harus menggunakan Return pernyataan, dan harus menentukan nilai. Sejumlah Return pernyataan dapat muncul di mana saja dalam prosedur.

Menentukan operator dengan cara ini disebut kelebihan beban operator, apakah Anda menggunakan Overloads kata kunci atau tidak. Tabel berikut mencantumkan operator yang bisa Anda tentukan.

Tipe Para Operator
Unari +, , -IsFalse, , IsTrue,Not
Biner +, , -, */, \, &^, , >>, <<, =, <>, >, >=, <, , <=And, Like, Mod, , OrXor
Konversi (unary) CType

Perhatikan bahwa = operator dalam daftar biner adalah operator perbandingan, bukan operator penugasan.

Saat Anda menentukan CType, Anda harus menentukan atau WideningNarrowing.

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 dan IsFalse

Pembatasan Tipe 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:

  • Operand operator unary.

  • Setidaknya salah satu operan operator biner.

  • Baik operand atau jenis pengembalian operator konversi.

Operator tertentu memiliki batasan jenis data tambahan, sebagai berikut:

  • Jika Anda menentukan IsTrue operator dan IsFalse , keduanya harus mengembalikan jenis .Boolean

  • Jika Anda menentukan << operator dan >> , mereka harus menentukan Integer jenis untuk operandtype .operand2

Jenis pengembalian tidak harus sesuai dengan jenis salah satu operand. Misalnya, operator perbandingan seperti = atau <> dapat mengembalikan Boolean meskipun tidak ada operand yang .Boolean

Operator Logis dan Bitwise

Operator And, Or, Not, dan Xor dapat melakukan operasi logis atau bitwise di 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 AndAlso operator secara langsung dengan Operator pernyataan. Namun, Anda dapat menggunakan AndAlso jika Anda telah memenuhi ketentuan berikut:

  • Anda telah menentukan And pada jenis operand yang sama dengan yang ingin Anda gunakan untuk AndAlso.

  • Definisi And Anda mengembalikan jenis yang sama dengan kelas atau struktur tempat Anda menentukannya.

  • Anda telah menentukan IsFalse operator pada kelas atau struktur tempat Anda menentukan And.

Demikian pula, Anda dapat menggunakan OrElse jika Anda telah menentukan Or pada operand yang sama, dengan jenis pengembalian kelas atau struktur, dan Anda telah menentukan IsTrue pada kelas atau struktur.

Memperlebar dan Mempersempit Konversi

Konversi yang melebar selalu berhasil pada waktu proses, sementara konversi yang mempersempit dapat gagal pada waktu proses. Untuk informasi selengkapnya, lihat Memperlebar dan Mempersempit Konversi.

Jika Anda menyatakan prosedur konversi menjadi Widening, kode prosedur Anda tidak boleh menghasilkan kegagalan apa pun. Ini berarti sebagai berikut:

  • Ini harus selalu mengembalikan nilai jenis typeyang valid .

  • Ini harus menangani semua kemungkinan pengecualian dan kondisi kesalahan lainnya.

  • Ini harus menangani pengembalian kesalahan 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 sebagai Narrowing.

Contoh

Contoh kode berikut menggunakan Operator pernyataan untuk menentukan kerangka struktur yang mencakup prosedur operator untuk Andoperator , , OrIsFalse, dan IsTrue . And dan Or masing-masing mengambil dua operan jenis abc dan mengembalikan jenis abc. IsFalse dan IsTrue masing-masing mengambil satu operand jenis abc dan mengembalikan Boolean. Definisi ini memungkinkan kode panggilan untuk menggunakan And, , AndAlsoOr, 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