In traditional OOP languages like C++, it is considered good practice to provide accessor methods to manipulate an object's state. For instance, if an object has a member variable named weight, a programmer often writes two functions. One function is used to get the value of weight, and another to set the value—something akin to get_Weight and set_Weight. To provide read-only access, the programmer would forego the get_ method.
Properties in VB.NET are merely a language construct used to provide this frequently used functionality and enforce good programming practice through the language.
Properties can be ReadOnly, WriteOnly, or both. Read-only properties contain a Get block that allows retrieval of a value, but prevents it from being changed:
Public ReadOnly Property Age( ) As Double Get Return Me.age End Get End Property
Write-only properties use a Set block, which allows values to be initialized but not retrieved:
Public WriteOnly Property Age( ) As Double Set 'age is a Private member variable Me.age = value End Set End Property
Properties that provide both read and write access must specify only an access modifier:
Public Property Age( ) As Double Get Return ...