Bagikan melalui


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

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 dan IsFalse, keduanya harus menampilkan jenis Boolean.

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

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 untuk AndAlso.

  • 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 menentukan And.

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