Definirea procedurilor de tip proprietate in VB.NET

In VB.NET, procedura proprietate reprezinta secventa de cod sursa de manipulare a unei caracteristici intr-un modul […], clasa de obiecte […] sau structura […].
VB.NET pune la dispozitie urmatoarele proceduri de tip proprietate:

  • Get: returneaza valoarea caracteristicii; caracteristica este accesata printr-o expresie;
  • Set: stabileste valoarea caracteristicii, incluzand referinta de obiect; este invocata pentru atribuirea unei valori pentru o proprietate.

Proprietatile sunt definite in perechi de proceduri Get si Set, dar nu obligatoriu. Pot exista definite doar proprietati Get sau proprietati Set.
Implicit, proprietatile au asociat modificatorul de acces Public […], ceea ce inseamna ca pot fi apelate din orice punct al aplicatiei. Mecanismul de transfer al parametrilor este cel prin valoare implementat prin specificatia ByVal.
Implementarea proprietatilor se realizeaza prin specificatiile Property si End Property. Get si Set se definesc in mod similar procedurilor […].

Dim a As Integer
Property aProp()
    Get
        Return a
    End Get

    Set(ByVal value)
        If value < 0 Then
            a = 0
        Else
            a = value
        End If
    End Set
End Property

Exemplul de mai sus creeaza o proprietate read/write. Proprietatea Get extrage valoarea variabilei a, iar proprietatea Set asociaza variabilei a o valoarea stocata de parametrul value, in functie de valoarea acestui parametru.
O proprietate este invocata atunci cand denumirea acesteia apare intr-o expresie, in mod similar utilizarii unei variabile. De exemplu, procedura Get este invocata astfel:

...
a = 10
Dim x As Integer
x = aProp
MsgBox("x=" &amp; x)
...

Se observa ca viaribila a este referita direct prin atribuirea:

a = 10

Valoarea lui a poate fi schimbata si prin intermediul urmatoarei secvente de cod sursa:

...
x = x + 13
aProp = x
MsgBox("a=" &amp; aProp)
MsgBox("a=" &amp; a)
...

Efectul executiei codului sursa de mai sus consta in modificarea valorii variabilei a prin invocarea implicita a proprietatii Set. Cele doua apeluri ale MsgBox au acelasi efect, respectiv afisarea noii valori a variabilei a prin invocarea proprietatii Get, respectiv prin referirea directa a variabilei a.