Fields and Properties in VB.NET
In this article I will explain you about Fields and Properties in VB.NET
Fields are ordinary member
variables or member instances of a class. Properties are an abstraction to get
and set their values. Properties are also called accessors because they offer a
way to change and retrieve a field if you expose a field in the class as
private. Generally, you should declare your member variables private, then
declare or define properties for them.
There are three obvious reasons for the necessity of properties in VB.NET
You can delay the creation of actual reference fields until you use them, which
saves resources. You can differentiate the representation and actual storage.
Representation is implemented via properties and storage is implemented via
fields. You can check constraints when setting and getting properties. If the
value is not suitable, you do not store the data in the field and a type-safety
error is returned. This really provides 100% type-safe accessors on demand.
Properties afford you the advantage of more elegant syntax along with the
robustness and better encapsulation of accessor methods. The syntax for
implementing a property in VB.NET, along with a constructor and a destructor and
using the property is shown in the Age property in below example.
Example of Constructor Destructor:
// example
property, ctor, dtor, exception
Module
module1
Public
Class
Individual
Private
m_age As
Int32
// note that this is private
// we could do this instead,
more explicit
// private Int32 age;
// the default specifiers are
all private!!!
Public
Sub
New(ByVal
age As
Int32)//
constructor, ctor
Me.m_age
= age//
this object, just for more clarity
End
Sub
Protected
Overrides
Sub
Finalize()//
destructor
Try
m_age = 0
Finally
MyBase.Finalize()
End
Try
End
Sub
Public
Property
Age() As
Int32//
public property
Get
Return m_age
End
Get
Set(ByVal
value As
Int32)
// validating value
If
value > 0 AndAlso
value < 200 Then
m_age = value
Else
// throw exception if invalid value
Throw
New
ArgumentException("not
between 1 and 150 ?")
End
If
End
Set
End
Property
End
Class
Sub Main()
Try
Dim Jabbar
As
New
Individual(27)
Console.WriteLine("This
year, Jabbar was {0} years old",
Jabbar.Age)
Jabbar.Age += 1//
uses both get and set to do increment
Console.WriteLine("Next
year, Jabbar will be {0} years old",
Jabbar.Age)
Catch
e As
ArgumentException
// catches this specific type and derived types
// uses Exception.ToString()
Console.WriteLine("{0}
Caught exception #1.", e)
End
Try
Console.ReadLine()
End
Sub
End
Module
Output

The pseudocode in example below
presents a read-only property example that defers resource allocation with the
help of properties.
Example
//
example property pseudocode, delayed resource allocation
// you allocate resources only when you really need them
// class 1
Module
Module1
Class
MyReader
//
prop1 - property
End
Class
// class 2
Class
MyWriter
// prop2 - property
// prop3 - property
End
Class
Public
Class
ExamplePropertyImplementation
Private
Shared
reader As
MyReader
Private
Shared
writer As
MyWriter
Private
Shared
[error] As
MyWriter
// public property
Public
Shared
ReadOnly
Property
prop1() As
MyReader
Get
If reader
Is
Nothing
Then
reader =
New
Reader()
End
If
Return reader
End
Get
End
Property
// public property
Public
Shared
ReadOnly
Property
prop2() As
MyWriter
Get
If writer
Is
Nothing
Then
writer =
New
MyWriter()
End
If
Return writer
End
Get
End
Property
// public property
Public
Shared
ReadOnly
Property
prop3() As
MyWriter
Get
If [error]
Is
Nothing
Then
[error] =
New
Writer()
End
If
Return [error]
End
Get
End
Property
End
Class
End
Module
By exposing these members as
properties, the class can delay their initialization until they are actually
used. Thus, if the application makes no reference to the prop2 and prop3
properties, no objects are created for those objects.
Conclusion
Hope this article would have helped you in understanding Fields and Properties
in VB.NET