Prosedur Properti (Visual Basic)

Prosedur properti adalah serangkaian pernyataan Visual Basic yang memanipulasi properti kustom pada modul, kelas, atau struktur. Prosedur properti juga dikenal sebagai pengakses properti.

Visual Basic menyediakan prosedur properti berikut ini:

  • Prosedur Get mengembalikan nilai properti. Prosedur ini dipanggil ketika Anda mengakses properti dalam ekspresi.
  • Prosedur Set menetapkan properti ke nilai, termasuk referensi objek. Prosedur ini dipanggil ketika Anda menetapkan nilai ke properti.

Anda biasanya menentukan prosedur properti secara berpasangan, menggunakan pernyataan Get dan Set, tetapi Anda dapat menentukan salah satu prosedur saja jika propertinya bersifat baca-saja (Dapatkan Pernyataan) atau tulis-saja (Atur Pernyataan).

Anda dapat menghilangkan prosedur Get dan Set saat menggunakan properti yang diterapkan secara otomatis. Untuk informasi selengkapnya, lihat Properti yang Diterapkan Secara Otomatis.

Anda bisa menentukan properti di kelas, struktur, dan modul. Properti adalah Public secara default, yang berarti Anda dapat memanggilnya dari mana saja di aplikasi Anda yang dapat mengakses kontainer properti.

Untuk perbandingan properti dan variabel, lihat Perbedaan Antara Properti dan Variabel pada Visual Basic.

Sintaks deklarasi

Properti itu sendiri didefinisikan oleh blok kode yang diapit dalam pernyataan Pernyataan Properti dan End Property. Di dalam blok ini, setiap prosedur properti muncul sebagai blok internal yang diapit dalam pernyataan deklarasi (Get atau Set) dan deklarasi End yang cocok.

Sintaks untuk mendeklarasikan properti dan prosedurnya adalah sebagai berikut:

[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]
    [AccessLevel] Get
        ' Statements of the Get procedure.
        ' The following statement returns an expression as the property's value.
        Return Expression
    End Get
    [AccessLevel] Set[(ByVal NewValue As DataType)]
        ' Statements of the Set procedure.
        ' The following statement assigns newvalue as the property's value.
        LValue = NewValue
    End Set
End Property
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]

Modifiers dapat menentukan tingkat akses dan informasi mengenai kelebihan beban, pengambilalihan, berbagi, dan bayangan, serta apakah propertinya baca-saja atau tulis-saja. Prosedur AccessLevel pada Get atau Set dapat berada pada tingkat apa pun yang lebih ketat daripada tingkat akses yang ditentukan untuk properti itu sendiri. Untuk informasi selengkapnya, lihat Pernyataan Properti.

Jenis Data

Jenis data properti dan tingkat akses utama didefinisikan dalam pernyataan Property, bukan dalam prosedur properti. Properti hanya bisa memiliki satu tipe data. Misalnya, Anda tidak bisa menentukan properti untuk menyimpan nilai Decimal tetapi mengambil nilai Double.

Tingkat Akses

Namun, Anda bisa menentukan tingkat akses utama untuk properti dan selanjutnya membatasi tingkat akses di salah satu prosedur propertinya. Misalnya, Anda bisa menentukan properti Public lalu menentukan prosedur Private Set. Prosedur Get tetap Public. Anda bisa mengubah tingkat akses hanya dalam salah satu prosedur properti, dan Anda hanya dapat membuatnya lebih ketat daripada tingkat akses utama. Untuk informasi selengkapnya, lihat Cara: Mendeklarasikan Properti dengan Tingkat Akses Campuran.

Deklarasi parameter

Anda mendeklarasikan setiap parameter dengan cara yang sama seperti yang Anda lakukan untuk Sub Prosedur, kecuali bahwa mekanisme kelulusan harus ByVal.

Sintaks untuk setiap parameter dalam daftar parameter adalah sebagai berikut:

[Optional] ByVal [ParamArray] parametername As datatype

Jika parameter bersifat opsional, Anda juga harus memberikan nilai default sebagai bagian dari deklarasinya. Sintaks untuk menentukan nilai default adalah sebagai berikut:

Optional ByVal parametername As datatype = defaultvalue

Nilai properti

Dalam prosedur Get, nilai pengembalian diberikan ke ekspresi panggilan sebagai nilai properti.

Dalam prosedur Set, nilai properti baru diteruskan ke parameter pernyataan Set. Jika Anda secara eksplisit mendeklarasikan parameter, Anda harus mendeklarasikannya dengan tipe data yang sama dengan properti. Jika Anda tidak mendeklarasikan parameter, pengkompilasi menggunakan parameter Value implisit untuk mewakili nilai baru yang akan ditetapkan ke properti.

Sintaks Panggilan

Anda meminta prosedur properti secara implisit dengan membuat rujukan ke properti. Anda menggunakan nama properti dengan cara yang sama seperti Anda akan menggunakan nama variabel, kecuali bahwa Anda harus memberikan nilai untuk semua argumen yang tidak opsional, dan Anda harus melampirkan daftar argumen menggunakan tanda kurung. Jika tidak ada argumen disediakan, Anda dapat menghilangkan tanda kurung secara opsional.

Sintaks untuk panggilan implisit ke prosedur Set adalah sebagai berikut:

propertyname[(argumentlist)] = expression

Sintaks untuk panggilan implisit ke prosedur Get adalah sebagai berikut:

lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)

Ilustrasi Deklarasi dan Panggilan

Properti berikut ini menyimpan nama lengkap sebagai dua nama konstituen, nama depan dan nama belakang. Ketika kode panggilan berbunyi fullName, prosedur Get menggabungkan dua nama konstituen dan mengembalikan nama lengkap. Ketika kode panggilan menetapkan nama lengkap baru, prosedur Set mencoba memecahnya menjadi dua nama konstituen. Jika tidak menemukan ruang, prosedur menyimpan semuanya sebagai nama depan.

Dim firstName, lastName As String
Property fullName() As String
    Get
      If lastName = "" Then
          Return firstName
      Else
          Return firstName & " " & lastName
      End If

    End Get
    Set(ByVal Value As String)
        Dim space As Integer = Value.IndexOf(" ")
        If space < 0 Then
            firstName = Value
            lastName = ""
        Else
            firstName = Value.Substring(0, space)
            lastName = Value.Substring(space + 1)
        End If
    End Set
End Property

Contoh berikut ini menunjukkan panggilan umum ke prosedur properti fullName:

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

Lihat juga