<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net_Tutorial%2FClass_Module%2FProperty</id>
		<title>VB.Net Tutorial/Class Module/Property - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net_Tutorial%2FClass_Module%2FProperty"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Class_Module/Property&amp;action=history"/>
		<updated>2026-04-05T15:39:20Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Class_Module/Property&amp;diff=3441&amp;oldid=prev</id>
		<title> в 16:40, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Class_Module/Property&amp;diff=3441&amp;oldid=prev"/>
				<updated>2010-05-26T16:40:30Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:40, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Class_Module/Property&amp;diff=3442&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Class_Module/Property&amp;diff=3442&amp;oldid=prev"/>
				<updated>2010-05-26T12:55:30Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Change value in Property getter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim p as Point = New Point()&lt;br /&gt;
    Console.WriteLine(&amp;quot;(&amp;quot; &amp;amp; p.X &amp;amp; &amp;quot;,&amp;quot; &amp;amp; p.Y &amp;amp; &amp;quot;)&amp;quot;) &lt;br /&gt;
    Try&lt;br /&gt;
      p.X = -100&lt;br /&gt;
      p.Y = -100&lt;br /&gt;
    Catch e as ArgumentOutOfRangeException&lt;br /&gt;
      Console.WriteLine(e.Message)&lt;br /&gt;
    End Try&lt;br /&gt;
    Console.WriteLine(&amp;quot;(&amp;quot; &amp;amp; p.X &amp;amp; &amp;quot;,&amp;quot; &amp;amp; p.Y &amp;amp; &amp;quot;)&amp;quot;) &lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&lt;br /&gt;
Public Class Point&lt;br /&gt;
  Private yCoord as Integer&lt;br /&gt;
  Private xCoord as Integer&lt;br /&gt;
    Public Property X as Integer&lt;br /&gt;
      Get&lt;br /&gt;
        Return(xCoord * 2) &lt;br /&gt;
      End Get&lt;br /&gt;
      Set(ByVal Value as Integer)&lt;br /&gt;
        xCoord = Value&lt;br /&gt;
      End Set&lt;br /&gt;
    End Property&lt;br /&gt;
  &lt;br /&gt;
  Public Property Y as Integer&lt;br /&gt;
    Get&lt;br /&gt;
      Return(yCoord)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value as Integer)&lt;br /&gt;
      yCoord = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;(0,0)&lt;br /&gt;
(-200,-100)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Class with a property that performs validation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Module YourClassTest&lt;br /&gt;
   Sub Main()&lt;br /&gt;
      Dim obj1 As New YourClass(&amp;quot;AAA&amp;quot;)&lt;br /&gt;
      Dim obj2 As New YourClass(&amp;quot;SSSSSSSSSSSSSSSSSSs&amp;quot;)&lt;br /&gt;
      Console.WriteLine(obj1.YourName)&lt;br /&gt;
      Console.WriteLine(obj2.YourName)&lt;br /&gt;
      obj1.YourName = &amp;quot;asdfasdfasdfasdf&amp;quot;&lt;br /&gt;
      Console.WriteLine(&amp;quot;obj1&amp;quot;s course name is: &amp;quot; &amp;amp; obj1.YourName)&lt;br /&gt;
      Console.WriteLine(&amp;quot;obj2&amp;quot;s course name is: &amp;quot; &amp;amp; obj2.YourName)&lt;br /&gt;
   End Sub &amp;quot; Main&lt;br /&gt;
End Module&lt;br /&gt;
&lt;br /&gt;
Public Class YourClass&lt;br /&gt;
   Private yourNameValue As String &amp;quot; course name for this YourClass&lt;br /&gt;
   Public Sub New(ByVal name As String)&lt;br /&gt;
      YourName = name &amp;quot; validate and store course name&lt;br /&gt;
   End Sub &amp;quot; New&lt;br /&gt;
   Public Property YourName() As String&lt;br /&gt;
      Get &amp;quot; retrieve yourNameValue&lt;br /&gt;
         Return yourNameValue&lt;br /&gt;
      End Get&lt;br /&gt;
      Set(ByVal value As String) &lt;br /&gt;
         If value.Length &amp;lt;= 5 Then &amp;quot; if value has 5 or fewer characters&lt;br /&gt;
            yourNameValue = value &amp;quot; store the course name in the object&lt;br /&gt;
         End If&lt;br /&gt;
         If value.Length &amp;gt; 5 Then &amp;quot; if value has more than 5 characters&lt;br /&gt;
            yourNameValue = value.Substring(0, 5)&lt;br /&gt;
            Console.WriteLine(&amp;quot;Name &amp;quot;&amp;quot;&amp;quot; &amp;amp; value &amp;amp; &amp;quot;&amp;quot;&amp;quot; exceeds maximum length (5).&amp;quot;)&lt;br /&gt;
            Console.WriteLine(&amp;quot;Limiting name to first 5 characters.&amp;quot; &amp;amp; vbCrLf)&lt;br /&gt;
         End If&lt;br /&gt;
      End Set&lt;br /&gt;
   End Property &amp;quot; YourName&lt;br /&gt;
   Public Sub DisplayMessage()&lt;br /&gt;
      Console.WriteLine(&amp;quot;Welcome to &amp;quot; &amp;amp; YourName &amp;amp; &amp;quot;!&amp;quot;)&lt;br /&gt;
   End Sub &amp;quot; DisplayMessage&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Name &amp;quot;SSSSSSSSSSSSSSSSSSs&amp;quot; exceeds maximum length (5).&lt;br /&gt;
Limiting name to first 5 characters.&lt;br /&gt;
AAA&lt;br /&gt;
SSSSS&lt;br /&gt;
Name &amp;quot;asdfasdfasdfasdf&amp;quot; exceeds maximum length (5).&lt;br /&gt;
Limiting name to first 5 characters.&lt;br /&gt;
obj1&amp;quot;s course name is: asdfa&lt;br /&gt;
obj2&amp;quot;s course name is: SSSSS&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Convert data type in property set==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Public Class YourClass&lt;br /&gt;
  &lt;br /&gt;
  Private MyState as String = &amp;quot;DEFAULT&amp;quot;&lt;br /&gt;
  Public Property State As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return MyState&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(Value As String)&lt;br /&gt;
      MyState = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  &lt;br /&gt;
End Class&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim C As New YourClass()&lt;br /&gt;
    Console.WriteLine(C.State)&lt;br /&gt;
    &lt;br /&gt;
    C.State = 5&lt;br /&gt;
    &lt;br /&gt;
    Console.WriteLine(C.State)&lt;br /&gt;
    &lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;DEFAULT&lt;br /&gt;
5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Default Property==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Imports System.Collections&lt;br /&gt;
Class EmployeeList&lt;br /&gt;
  Private mEmployees As Hashtable&lt;br /&gt;
  Public Sub New()&lt;br /&gt;
    mEmployees = New Hashtable()&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Default Property Employee(ByVal ID As Integer) As Employee&lt;br /&gt;
    Get&lt;br /&gt;
      Dim theObject As Object&lt;br /&gt;
      theObject = mEmployees(ID)&lt;br /&gt;
      Return CType(theObject, Employee)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As Employee)&lt;br /&gt;
      mEmployees(ID) = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&lt;br /&gt;
Class Employee&lt;br /&gt;
  Private mName As String&lt;br /&gt;
  Private mWage As Double&lt;br /&gt;
  Private mID As Integer&lt;br /&gt;
  Public Sub New(ByVal name As String, _&lt;br /&gt;
                 ByVal wage As Double, _&lt;br /&gt;
                 ByVal id As Integer)&lt;br /&gt;
    mName = name&lt;br /&gt;
    mWage = wage&lt;br /&gt;
    mID = id&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Name() As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return mName&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      mName = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property Wage() As Double&lt;br /&gt;
    Get&lt;br /&gt;
      Return mWage&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property ID() As Integer&lt;br /&gt;
    Get&lt;br /&gt;
      Return mID&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
  Public Sub PayRise(ByVal amount As Double)&lt;br /&gt;
    mWage += amount&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Overrides Function ToString() As String&lt;br /&gt;
    Return &amp;quot;[&amp;quot; &amp;amp; mID &amp;amp; &amp;quot;] &amp;quot; &amp;amp; mName &amp;amp; &amp;quot; &amp;quot; &amp;amp; mWage&lt;br /&gt;
  End Function&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim employer As New EmployeeList()&lt;br /&gt;
    employer.Employee(1) = New Employee(&amp;quot;A&amp;quot;, 25000, 1)&lt;br /&gt;
    employer.Employee(2) = New Employee(&amp;quot;J&amp;quot;, 35000, 2)&lt;br /&gt;
    employer.Employee(3) = New Employee(&amp;quot;T&amp;quot;, 17000, 3)&lt;br /&gt;
    employer.Employee(4) = New Employee(&amp;quot;E&amp;quot;, 16500, 4)&lt;br /&gt;
    Dim ID As Integer&lt;br /&gt;
    ID = 2&lt;br /&gt;
    Dim who As Employee&lt;br /&gt;
    who = employer.Employee(ID)&lt;br /&gt;
    If who Is Nothing Then&lt;br /&gt;
      Console.WriteLine(&amp;quot;Unrecognized ID: {0}&amp;quot;, ID)&lt;br /&gt;
    Else&lt;br /&gt;
      Console.WriteLine(&amp;quot;Employee details: {0}&amp;quot;, who)&lt;br /&gt;
    End If&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Employee details: [2] J 35000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Define and use a Property==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Option Strict On&lt;br /&gt;
 Imports System&lt;br /&gt;
 Public Class Cat&lt;br /&gt;
    Private mWeight As Integer&lt;br /&gt;
    Public Sub New(ByVal weight As Integer)&lt;br /&gt;
       mWeight = weight&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Property Weight( ) As Integer&lt;br /&gt;
       Get&lt;br /&gt;
          Return mWeight&lt;br /&gt;
       End Get&lt;br /&gt;
       Set(ByVal Value As Integer)&lt;br /&gt;
          mWeight = Value&lt;br /&gt;
       End Set&lt;br /&gt;
    End Property&lt;br /&gt;
    Public Overrides Function ToString( ) As String&lt;br /&gt;
       Return mWeight.ToString( )&lt;br /&gt;
    End Function&lt;br /&gt;
 End Class&lt;br /&gt;
 Module Module1&lt;br /&gt;
    Sub Main( )&lt;br /&gt;
       Dim theVariable As New Cat(5)&lt;br /&gt;
       Console.WriteLine(&amp;quot;In Run. theVariable: {0}&amp;quot;,theVariable)&lt;br /&gt;
       Doubler(theVariable)&lt;br /&gt;
       Console.WriteLine(&amp;quot;Back in Run. theVariable: {0}&amp;quot;,theVariable)&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Sub Doubler(ByVal param As Cat)&lt;br /&gt;
       Console.WriteLine(&amp;quot;In Method1. Received param: {0}&amp;quot;,param)&lt;br /&gt;
       param.Weight = param.Weight * 2&lt;br /&gt;
       Console.WriteLine(&amp;quot;Updated param. Returning new value: {0}&amp;quot;,param)&lt;br /&gt;
    End Sub&lt;br /&gt;
 End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;In Run. theVariable: 5&lt;br /&gt;
In Method1. Received param: 5&lt;br /&gt;
Updated param. Returning new value: 10&lt;br /&gt;
Back in Run. theVariable: 10&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Do calculation in Property getter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Imports System.Data.OleDb&lt;br /&gt;
Imports System.ruponentModel.ruponent&lt;br /&gt;
Class Employee&lt;br /&gt;
  Private MName As String&lt;br /&gt;
  Private MDob As DateTime&lt;br /&gt;
  Private MCompany As String&lt;br /&gt;
  Public Sub New(ByVal name As String, ByVal dob As DateTime)&lt;br /&gt;
    MName = name&lt;br /&gt;
    MDob = dob&lt;br /&gt;
    MCompany = &amp;quot;ABC&amp;quot;&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Name() As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return MName&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      MName = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property Age() As Integer&lt;br /&gt;
    Get&lt;br /&gt;
      Dim today As DateTime = DateTime.Now&lt;br /&gt;
      Dim Years As Integer = DateTime.Now.Year - mDob.Year&lt;br /&gt;
      If (today.Month &amp;lt; MDob.Month) Or _&lt;br /&gt;
         (today.Month = MDob.Month And _ &lt;br /&gt;
          today.Day &amp;lt; MDob.Day) Then&lt;br /&gt;
        Years -= 1&lt;br /&gt;
      End If&lt;br /&gt;
      Return years&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim AEmployee As New Employee(&amp;quot;A&amp;quot;, New DateTime(1964, 12, 3))&lt;br /&gt;
    Console.WriteLine(&amp;quot;{0} is {1}&amp;quot;, AEmployee.Name, AEmployee.Age)&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A is 42&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Do data check in property set==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;public class Test&lt;br /&gt;
   public Shared Sub Main&lt;br /&gt;
        Dim objMyObject As YourClass&lt;br /&gt;
        objMyObject = New YourClass()&lt;br /&gt;
        Console.WriteLine(objMyObject.AddTwoNumbers(1, 2))&lt;br /&gt;
        objMyObject = Nothing&lt;br /&gt;
   End Sub&lt;br /&gt;
End Class&lt;br /&gt;
Public Class YourClass&lt;br /&gt;
    Private m_intHeight As Integer&lt;br /&gt;
    &lt;br /&gt;
    Public Property Height() As Integer&lt;br /&gt;
        Get&lt;br /&gt;
            Return m_intHeight&lt;br /&gt;
        End Get&lt;br /&gt;
        Set(ByVal value As Integer)&lt;br /&gt;
            If m_intHeight &amp;lt; 10 Then Exit Property&lt;br /&gt;
            m_intHeight = value&lt;br /&gt;
        End Set&lt;br /&gt;
    End Property&lt;br /&gt;
    Public Function AddTwoNumbers(ByVal intNumber1 As Integer, _&lt;br /&gt;
                                  ByVal intNumber2 As Integer) As Long&lt;br /&gt;
        AddTwoNumbers = intNumber1 + intNumber2&lt;br /&gt;
    End Function&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Friend Property==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim acct As New Account()&lt;br /&gt;
    Console.WriteLine(acct.AccountHolder)&lt;br /&gt;
    Dim cAcct As New CheckingAccount()&lt;br /&gt;
    Console.WriteLine(cAcct.AccountHolder)&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&lt;br /&gt;
Public Class CheckingAccount&lt;br /&gt;
  Inherits Account&lt;br /&gt;
  Sub New()&lt;br /&gt;
    MyBase.New&lt;br /&gt;
    Console.WriteLine(MyBase.retrieved) &lt;br /&gt;
    Console.WriteLine(MyBase.AccountHolder)&lt;br /&gt;
  End Sub&lt;br /&gt;
End Class&lt;br /&gt;
Public Class Account&lt;br /&gt;
  Protected retrieved As DateTime&lt;br /&gt;
  Private acctHolder As String&lt;br /&gt;
  &lt;br /&gt;
  Public Sub New()&lt;br /&gt;
    retrieved = DateTime.Now()&lt;br /&gt;
    acctHolder = &amp;quot;DEFAULT&amp;quot;&lt;br /&gt;
  End Sub&lt;br /&gt;
  &lt;br /&gt;
  Friend Property AccountHolder As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return acctHolder&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String) &lt;br /&gt;
      acctHolder = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;DEFAULT&lt;br /&gt;
11/05/2007 12:22:44 PM&lt;br /&gt;
DEFAULT&lt;br /&gt;
DEFAULT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Loop through two dimensional array with GetUpperBound and GetLowerBound==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System.Collections&lt;br /&gt;
public class Test&lt;br /&gt;
   public Shared Sub Main&lt;br /&gt;
        Dim i As Integer&lt;br /&gt;
        Dim j As Integer&lt;br /&gt;
               Dim myArray4(2, 2) As Object             &amp;quot;2 dimensional array with 9 elements&lt;br /&gt;
               For i = myArray4.GetLowerBound(0) To myArray4.GetUpperBound(0)&lt;br /&gt;
                       For j = myArray4.GetLowerBound(1) To myArray4.GetUpperBound(1)&lt;br /&gt;
                myArray4(i, j) = i + j&lt;br /&gt;
                       Next&lt;br /&gt;
               Next&lt;br /&gt;
               For i = myArray4.GetLowerBound(0) To myArray4.GetUpperBound(0)&lt;br /&gt;
                       For j = myArray4.GetLowerBound(1) To myArray4.GetUpperBound(1)&lt;br /&gt;
                               Console.WriteLine(myArray4(i, j))&lt;br /&gt;
                       Next&lt;br /&gt;
               Next&lt;br /&gt;
   End Sub&lt;br /&gt;
End class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;0&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MultiKey Properties==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Imports System.Collections&lt;br /&gt;
Class Employee&lt;br /&gt;
  Private MName As String&lt;br /&gt;
  Private MWage As Double&lt;br /&gt;
  Public Sub New(ByVal Name As String, ByVal Wage As Double)&lt;br /&gt;
    MName = Name&lt;br /&gt;
    MWage = Wage&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Name() As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return MName&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      MName = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property Wage() As Double&lt;br /&gt;
    Get&lt;br /&gt;
      Return MWage&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
  Public Sub PayRaise(ByVal Amount As Double)&lt;br /&gt;
    MWage += Amount&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Overrides Function ToString() As String&lt;br /&gt;
    Return MName &amp;amp; &amp;quot; &amp;quot; &amp;amp; MWage&lt;br /&gt;
  End Function&lt;br /&gt;
End Class&lt;br /&gt;
Class EmployeeList&lt;br /&gt;
  Private MEmployees As Hashtable&lt;br /&gt;
  Public Sub New()&lt;br /&gt;
    MEmployees = New Hashtable()&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Employee(ByVal Location As String, ByVal ID As Integer) As Employee&lt;br /&gt;
    Get&lt;br /&gt;
      Dim Key As String = Location + ID.ToString()&lt;br /&gt;
      Return MEmployees(Key)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As Employee)&lt;br /&gt;
      Dim Key As String = Location + ID.ToString()&lt;br /&gt;
      MEmployees(Key) = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim EmployeeList As New EmployeeList()&lt;br /&gt;
    EmployeeList.Employee(&amp;quot;A&amp;quot;, 1) = New Employee(&amp;quot;S&amp;quot;, 2)&lt;br /&gt;
    EmployeeList.Employee(&amp;quot;B&amp;quot;, 2) = New Employee(&amp;quot;C&amp;quot;, 3)&lt;br /&gt;
    EmployeeList.Employee(&amp;quot;C&amp;quot;, 3) = New Employee(&amp;quot;B&amp;quot;, 1)&lt;br /&gt;
    EmployeeList.Employee(&amp;quot;D&amp;quot;, 4) = New Employee(&amp;quot;A&amp;quot;, 1)&lt;br /&gt;
    Dim Who As Employee&lt;br /&gt;
    Who = EmployeeList.Employee(&amp;quot;Boston&amp;quot;, 200)&lt;br /&gt;
    Console.WriteLine(&amp;quot;{0}&amp;quot;, Who)&lt;br /&gt;
    Who = EmployeeList.Employee(&amp;quot;Geneva&amp;quot;, 200)&lt;br /&gt;
    Console.WriteLine(&amp;quot;{0}&amp;quot;, Who)&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overloaded Properties==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Imports System.Collections&lt;br /&gt;
Class Employee&lt;br /&gt;
  Public Name As String&lt;br /&gt;
  Public Wage As Double&lt;br /&gt;
  Public ID As Integer&lt;br /&gt;
  Public Sub New(ByVal N As String, ByVal W As Double, ByVal I As Integer)&lt;br /&gt;
     Name = N&lt;br /&gt;
     Wage = W&lt;br /&gt;
     ID = I&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Sub PayRaise(ByVal Amount As Double)&lt;br /&gt;
    Wage += Amount&lt;br /&gt;
  End Sub&lt;br /&gt;
&lt;br /&gt;
  Public Overrides Function ToString() As String&lt;br /&gt;
    Return &amp;quot;[&amp;quot; &amp;amp; ID &amp;amp; &amp;quot;]&amp;quot; &amp;amp; &amp;quot; &amp;quot; &amp;amp; Name &amp;amp; &amp;quot; &amp;quot; &amp;amp; Wage&lt;br /&gt;
  End Function&lt;br /&gt;
End Class&lt;br /&gt;
Class EmployeeList&lt;br /&gt;
  Private idTable As Hashtable&lt;br /&gt;
  Private nameTable As Hashtable&lt;br /&gt;
  &lt;br /&gt;
  Public Sub New()&lt;br /&gt;
    idTable = New Hashtable()&lt;br /&gt;
    nameTable = New Hashtable()&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Employee(ByVal ID As Integer) As Employee&lt;br /&gt;
    Get&lt;br /&gt;
      Return idTable(ID)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As Employee)&lt;br /&gt;
      idTable(ID) = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public Property Employee(ByVal Name As String) As Employee&lt;br /&gt;
    Get&lt;br /&gt;
      Return nameTable(name)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As Employee)&lt;br /&gt;
      nameTable(Name) = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim EmployeeList As New EmployeeList()&lt;br /&gt;
    EmployeeList.Employee(1) = New Employee(&amp;quot;A&amp;quot;, 250, 100)&lt;br /&gt;
    EmployeeList.Employee(2) = New Employee(&amp;quot;B&amp;quot;, 350, 200)&lt;br /&gt;
    EmployeeList.Employee(3) = New Employee(&amp;quot;C&amp;quot;, 170, 300)&lt;br /&gt;
    EmployeeList.Employee(4) = New Employee(&amp;quot;D&amp;quot;, 165, 400)&lt;br /&gt;
    EmployeeList.Employee(&amp;quot;N&amp;quot;) = New Employee(&amp;quot;N&amp;quot;, 50000, 500)&lt;br /&gt;
    EmployeeList.Employee(&amp;quot;C&amp;quot;) = New Employee(&amp;quot;C&amp;quot;, 60000, 600)&lt;br /&gt;
    Dim ID As Integer = 1&lt;br /&gt;
    Dim Who As Employee&lt;br /&gt;
    Who = EmployeeList.Employee(ID)&lt;br /&gt;
    If Who Is Nothing Then&lt;br /&gt;
      Console.WriteLine(&amp;quot;Unrecognized ID: {0}&amp;quot;, ID)&lt;br /&gt;
    Else&lt;br /&gt;
      Console.WriteLine(&amp;quot;Employee details: {0}&amp;quot;, Who)&lt;br /&gt;
    End If&lt;br /&gt;
    Dim Name As String = &amp;quot;N&amp;quot;&lt;br /&gt;
    Who = EmployeeList.Employee(Name)&lt;br /&gt;
    If Who Is Nothing Then&lt;br /&gt;
      Console.WriteLine(&amp;quot;Unrecognized name: {0}&amp;quot;, Name)&lt;br /&gt;
    Else&lt;br /&gt;
      Console.WriteLine(&amp;quot;Employee details: {0}&amp;quot;, Who)&lt;br /&gt;
    End If&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Employee details: [100] A 250&lt;br /&gt;
Employee details: [500] N 50000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Properties with Getter and Setter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Public Class Tester&lt;br /&gt;
    Public Shared Sub Main&lt;br /&gt;
      Dim time As New CTime3()&lt;br /&gt;
      &amp;quot; add one second&lt;br /&gt;
      time.Second = (time.Second + 1) Mod 60&lt;br /&gt;
      &amp;quot; add one minute if 60 seconds have passed&lt;br /&gt;
      If time.Second = 0 Then&lt;br /&gt;
         time.Minute = (time.Minute + 1) Mod 60&lt;br /&gt;
         &amp;quot; add one hour if 60 minutes have passed&lt;br /&gt;
         If time.Minute = 0 Then&lt;br /&gt;
            time.Hour = (time.Hour + 1) Mod 24&lt;br /&gt;
         End If&lt;br /&gt;
      End If&lt;br /&gt;
      time.Hour = 1&lt;br /&gt;
      time.Minute = 2&lt;br /&gt;
      time.Second = 3&lt;br /&gt;
      Console.WriteLine(&amp;quot;Hour: &amp;quot; &amp;amp; time.Hour &amp;amp; &amp;quot;; Minute: &amp;quot; &amp;amp; _&lt;br /&gt;
         time.Minute &amp;amp; &amp;quot;; Second: &amp;quot; &amp;amp; time.Second)&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&lt;br /&gt;
Class CTime3&lt;br /&gt;
   Inherits Object&lt;br /&gt;
   Private mHour As Integer&lt;br /&gt;
   Private mMinute As Integer&lt;br /&gt;
   Private mSecond As Integer&lt;br /&gt;
   Public Sub New()&lt;br /&gt;
   End Sub &amp;quot; New&lt;br /&gt;
   &amp;quot; property Hour&lt;br /&gt;
   Public Property Hour() As Integer&lt;br /&gt;
      &amp;quot; return mHour value&lt;br /&gt;
      Get&lt;br /&gt;
         Return mHour&lt;br /&gt;
      End Get&lt;br /&gt;
      &amp;quot; set mHour value&lt;br /&gt;
      Set(ByVal value As Integer)&lt;br /&gt;
         If (value &amp;gt;= 0 AndAlso value &amp;lt; 24) Then&lt;br /&gt;
            mHour = value&lt;br /&gt;
         Else&lt;br /&gt;
            mHour = 0&lt;br /&gt;
         End If&lt;br /&gt;
      End Set&lt;br /&gt;
   End Property &amp;quot; Hour&lt;br /&gt;
   &amp;quot; property Minute&lt;br /&gt;
   Public Property Minute() As Integer&lt;br /&gt;
      &amp;quot; return mMinute value&lt;br /&gt;
      Get&lt;br /&gt;
         Return mMinute&lt;br /&gt;
      End Get&lt;br /&gt;
      &amp;quot; set mMinute value&lt;br /&gt;
      Set(ByVal value As Integer)&lt;br /&gt;
         If (value &amp;gt;= 0 AndAlso value &amp;lt; 60) Then&lt;br /&gt;
            mMinute = value&lt;br /&gt;
         Else&lt;br /&gt;
            mMinute = 0&lt;br /&gt;
         End If&lt;br /&gt;
      End Set&lt;br /&gt;
   End Property &amp;quot; Minute&lt;br /&gt;
   &amp;quot; property Second&lt;br /&gt;
   Public Property Second() As Integer&lt;br /&gt;
      &amp;quot; return mSecond value&lt;br /&gt;
      Get&lt;br /&gt;
         Return mSecond&lt;br /&gt;
      End Get&lt;br /&gt;
      &amp;quot; set mSecond value&lt;br /&gt;
      Set(ByVal value As Integer)&lt;br /&gt;
         If (value &amp;gt;= 0 AndAlso value &amp;lt; 60) Then&lt;br /&gt;
            mSecond = value&lt;br /&gt;
         Else&lt;br /&gt;
            mSecond = 0&lt;br /&gt;
         End If&lt;br /&gt;
      End Set&lt;br /&gt;
   End Property &amp;quot; Second&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Hour: 1; Minute: 2; Second: 3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Readable and Writable==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Class Employee&lt;br /&gt;
  Private MName As String&lt;br /&gt;
  Private MDob As DateTime&lt;br /&gt;
  Private MEmailAlias As String&lt;br /&gt;
  Public Sub New(ByVal Name As String, ByVal Dob As DateTime)&lt;br /&gt;
    MName = Name&lt;br /&gt;
    MDob = Dob&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Name() As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return MName&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      MName = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property Brithday() As DateTime&lt;br /&gt;
    Get&lt;br /&gt;
      Return MDob&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
  Public WriteOnly Property EmailAlias() As String&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      MEmailAlias = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property EmailAddress() As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return MEmailAlias &amp;amp; &amp;quot;@a.ru&amp;quot;&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&lt;br /&gt;
Module ReadableAndWritable&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim emp As New Employee(&amp;quot;T&amp;quot;, New DateTime(1997, 7, 2))&lt;br /&gt;
    emp.Name = &amp;quot;T&amp;quot;&lt;br /&gt;
    Console.WriteLine(&amp;quot;Name: {0}&amp;quot;, emp.Name)&lt;br /&gt;
    Console.WriteLine(&amp;quot;Date of birth: {0}&amp;quot;, emp.Brithday.ToLongDateString)&lt;br /&gt;
    emp.EmailAlias = &amp;quot;AAA&amp;quot;&lt;br /&gt;
    Console.WriteLine(&amp;quot;Email address: {0}&amp;quot;, emp.EmailAddress)&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Name: T&lt;br /&gt;
Date of birth: July 2, 1997&lt;br /&gt;
Email address: AAA@a.ru&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ReadOnly property==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Option Strict On&lt;br /&gt;
Public Class YourClass&lt;br /&gt;
   Private yourName As String&lt;br /&gt;
   Private yourNumber As Decimal&lt;br /&gt;
   Public Sub New(breed As String)&lt;br /&gt;
      yourName = breed&lt;br /&gt;
   End Sub&lt;br /&gt;
   Public ReadOnly Property Name() As String&lt;br /&gt;
      Get&lt;br /&gt;
         Return yourName&lt;br /&gt;
      End Get&lt;br /&gt;
   End Property&lt;br /&gt;
   Public Property Number() As Decimal&lt;br /&gt;
      Get&lt;br /&gt;
         Return yourNumber&lt;br /&gt;
      End Get&lt;br /&gt;
      Set&lt;br /&gt;
         yourNumber = CDec(value)&lt;br /&gt;
      End Set&lt;br /&gt;
   End Property&lt;br /&gt;
   Public Sub ShowInfo()&lt;br /&gt;
      Console.WriteLine(&amp;quot;This &amp;quot; &amp;amp; yourName &amp;amp; &amp;quot; weighs &amp;quot; &amp;amp; yourNumber &amp;amp; &amp;quot; pounds.&amp;quot;)&lt;br /&gt;
   End Sub&lt;br /&gt;
End Class&lt;br /&gt;
Public Class Tester&lt;br /&gt;
   Public Shared Sub Main()&lt;br /&gt;
      Dim mal As New YourClass(&amp;quot;A&amp;quot;)&lt;br /&gt;
      mal.Number = 130&lt;br /&gt;
      ChangeYourClassInfo(mal)&lt;br /&gt;
      mal.ShowInfo&lt;br /&gt;
      CompletelyChangeYourClassInfo(mal)&lt;br /&gt;
      mal.ShowInfo&lt;br /&gt;
   End Sub&lt;br /&gt;
   Public Shared Sub ChangeYourClassInfo(ByVal aYourClass As YourClass)&lt;br /&gt;
      aYourClass.Number = 125&lt;br /&gt;
   End Sub&lt;br /&gt;
   Public Shared Sub CompletelyChangeYourClassInfo(ByVal aYourClass As YourClass)&lt;br /&gt;
      Dim newf As New YourClass(&amp;quot;Newfoundland&amp;quot;)&lt;br /&gt;
      aYourClass = newf&lt;br /&gt;
   End Sub&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;This A weighs 125 pounds.&lt;br /&gt;
This A weighs 125 pounds.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Shared Properties==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Class Person&lt;br /&gt;
  Private Shared MDomain As String&lt;br /&gt;
  Private Name As String&lt;br /&gt;
  Private Birthday As DateTime&lt;br /&gt;
  Private EmailAlias As String&lt;br /&gt;
  Public Shared Property Domain() As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return MDomain&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      MDomain = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public Sub New(ByVal N As String, ByVal Dob As DateTime)&lt;br /&gt;
    Name = N&lt;br /&gt;
    Birthday = Dob&lt;br /&gt;
  End Sub&lt;br /&gt;
End Class&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim APerson As New Person(&amp;quot;P&amp;quot;, New DateTime(1997, 7, 2))&lt;br /&gt;
    Person.Domain = &amp;quot;My.ru&amp;quot;&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Shared variable and Shared Property==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Module Tester&lt;br /&gt;
   Sub Main()&lt;br /&gt;
      Console.WriteLine(&amp;quot;Employees before instantiation: &amp;quot; &amp;amp; _&lt;br /&gt;
         Employee.Count)&lt;br /&gt;
      Dim employee1 As Employee = New Employee(&amp;quot;S&amp;quot;, &amp;quot;B&amp;quot;)&lt;br /&gt;
      Dim employee2 As Employee = New Employee(&amp;quot;B&amp;quot;, &amp;quot;J&amp;quot;)&lt;br /&gt;
      Console.WriteLine(&amp;quot;Employee.Count: &amp;quot; &amp;amp; Employee.Count)&lt;br /&gt;
      employee1 = Nothing&lt;br /&gt;
      employee2 = Nothing&lt;br /&gt;
      System.GC.Collect() &amp;quot; request garbage collection&lt;br /&gt;
      &lt;br /&gt;
      Console.WriteLine(&amp;quot;Employee.Count: &amp;quot; &amp;amp; Employee.Count)&lt;br /&gt;
      &lt;br /&gt;
   End Sub &amp;quot; Main&lt;br /&gt;
End Module&lt;br /&gt;
Class Employee&lt;br /&gt;
   Inherits Object&lt;br /&gt;
   Private mFirstName As String&lt;br /&gt;
   Private mLastName As String&lt;br /&gt;
   Private Shared mCount As Integer&lt;br /&gt;
   Public Sub New(ByVal firstNameValue As String, _&lt;br /&gt;
      ByVal lastNameValue As String)&lt;br /&gt;
      mFirstName = firstNameValue&lt;br /&gt;
      mLastName = lastNameValue&lt;br /&gt;
      mCount += 1 &lt;br /&gt;
      Console.WriteLine _&lt;br /&gt;
         (&amp;quot;Employee object constructor: &amp;quot; &amp;amp; mFirstName &amp;amp; _&lt;br /&gt;
         &amp;quot; &amp;quot; &amp;amp; mLastName)&lt;br /&gt;
   End Sub &amp;quot; New&lt;br /&gt;
   Protected Overrides Sub Finalize()&lt;br /&gt;
      mCount -= 1 &amp;quot; decrement mCount, resulting in one fewer object&lt;br /&gt;
      Console.WriteLine _&lt;br /&gt;
         (&amp;quot;Employee object finalizer: &amp;quot; &amp;amp; mFirstName &amp;amp; _&lt;br /&gt;
         &amp;quot; &amp;quot; &amp;amp; mLastName &amp;amp; &amp;quot;; count = &amp;quot; &amp;amp; mCount)&lt;br /&gt;
   End Sub &amp;quot; Finalize&lt;br /&gt;
   Public ReadOnly Property FirstName() As String&lt;br /&gt;
      Get&lt;br /&gt;
         Return mFirstName&lt;br /&gt;
      End Get&lt;br /&gt;
   End Property &amp;quot; FirstName&lt;br /&gt;
   &amp;quot; return last name&lt;br /&gt;
   Public ReadOnly Property LastName() As String&lt;br /&gt;
      Get&lt;br /&gt;
         Return mLastName&lt;br /&gt;
      End Get&lt;br /&gt;
   End Property &amp;quot; LastName&lt;br /&gt;
   &amp;quot; property Count&lt;br /&gt;
   Public Shared ReadOnly Property Count() As Integer&lt;br /&gt;
      Get&lt;br /&gt;
         Return mCount&lt;br /&gt;
      End Get&lt;br /&gt;
   End Property &amp;quot; Count&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Employees before instantiation: 0&lt;br /&gt;
Employee object constructor: S B&lt;br /&gt;
Employee object constructor: B J&lt;br /&gt;
Employee.Count: 2&lt;br /&gt;
Employee object finalizer: B J; count = 1&lt;br /&gt;
Employee object finalizer: S B; count = 0&lt;br /&gt;
Employee.Count: 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Single Indexed Property==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Imports System.Collections&lt;br /&gt;
Class Employee&lt;br /&gt;
  Public Name As String&lt;br /&gt;
  Public Wage As Double&lt;br /&gt;
  Public Sub New(ByVal N As String, ByVal W As Double)&lt;br /&gt;
    Name = N&lt;br /&gt;
    Wage = W&lt;br /&gt;
  End Sub&lt;br /&gt;
    Public Sub PayRaise(ByVal Amount As Double)&lt;br /&gt;
        Wage += Amount&lt;br /&gt;
    End Sub&lt;br /&gt;
    Public Overrides Function ToString() As String&lt;br /&gt;
        Return Name &amp;amp; &amp;quot; &amp;quot; &amp;amp; Wage&lt;br /&gt;
    End Function&lt;br /&gt;
End Class&lt;br /&gt;
Class Employer&lt;br /&gt;
  Private MEmployees As Hashtable&lt;br /&gt;
  Public Sub New()&lt;br /&gt;
    MEmployees = New Hashtable()&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Employee(ByVal ID As Integer) As Employee&lt;br /&gt;
    Get&lt;br /&gt;
      Dim TheObject As Object&lt;br /&gt;
      TheObject = MEmployees.Item(ID)&lt;br /&gt;
      Return CType(TheObject, Employee)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As Employee)&lt;br /&gt;
      MEmployees.Item(ID) = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim Employer As New Employer()&lt;br /&gt;
    Employer.Employee(1) = New Employee(&amp;quot;A&amp;quot;, 25000)&lt;br /&gt;
    Employer.Employee(2) = New Employee(&amp;quot;J&amp;quot;, 35000)&lt;br /&gt;
    Employer.Employee(3) = New Employee(&amp;quot;T&amp;quot;, 17000)&lt;br /&gt;
    Employer.Employee(4) = New Employee(&amp;quot;E&amp;quot;, 16500)&lt;br /&gt;
    Dim ID As Integer = 3&lt;br /&gt;
    Dim Who As Employee&lt;br /&gt;
    Who = employer.Employee(ID)&lt;br /&gt;
    If Who Is Nothing Then&lt;br /&gt;
      Console.WriteLine(&amp;quot;Unrecognized ID: {0}&amp;quot;, ID)&lt;br /&gt;
    Else&lt;br /&gt;
      Console.WriteLine(&amp;quot;Employee details: {0}&amp;quot;, Who)&lt;br /&gt;
    End If&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Employee details: T 17000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Throw Exception in Property setting==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Module Test&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    &lt;br /&gt;
    Dim p as Point = New Point()&lt;br /&gt;
    &lt;br /&gt;
    Console.WriteLine(&amp;quot;(&amp;quot; &amp;amp; p.X &amp;amp; &amp;quot;,&amp;quot; &amp;amp; p.Y &amp;amp; &amp;quot;)&amp;quot;) &lt;br /&gt;
    &lt;br /&gt;
    Try&lt;br /&gt;
      p.X = -100&lt;br /&gt;
      p.Y = -100&lt;br /&gt;
    Catch e as ArgumentOutOfRangeException&lt;br /&gt;
      Console.WriteLine(e.Message)&lt;br /&gt;
    End Try&lt;br /&gt;
    &lt;br /&gt;
    Console.WriteLine(&amp;quot;(&amp;quot; &amp;amp; p.X &amp;amp; &amp;quot;,&amp;quot; &amp;amp; p.Y &amp;amp; &amp;quot;)&amp;quot;) &lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&lt;br /&gt;
Public Class Point&lt;br /&gt;
  Private yCoord as Integer&lt;br /&gt;
  Private xCoord as Integer&lt;br /&gt;
  Public Property X as Integer&lt;br /&gt;
    Get&lt;br /&gt;
      Return xCoord&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value as Integer)&lt;br /&gt;
      If Value &amp;lt; 0 then&lt;br /&gt;
        Throw New ArgumentOutOfRangeException(&amp;quot;Value&amp;quot;,&amp;quot;X Coordinate must be greater than 0&amp;quot;)&lt;br /&gt;
      End If&lt;br /&gt;
      xCoord = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  &lt;br /&gt;
  Public Property Y as Integer&lt;br /&gt;
    Get&lt;br /&gt;
      Return(yCoord)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value as Integer)&lt;br /&gt;
      If Value &amp;lt; 0 then &lt;br /&gt;
        Throw new ArgumentOutOfRangeException(&amp;quot;Value&amp;quot;,&amp;quot;Y Coordinate must be greater than 0&amp;quot;)&lt;br /&gt;
      End If&lt;br /&gt;
      yCoord = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;(0,0)&lt;br /&gt;
X Coordinate must be greater than 0&lt;br /&gt;
Parameter name: Value&lt;br /&gt;
(0,0)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Two properties==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System&lt;br /&gt;
Imports System.Collections&lt;br /&gt;
Class EmployeeList&lt;br /&gt;
  Private mEmployees As Hashtable&lt;br /&gt;
  Private mLevels As Hashtable&lt;br /&gt;
  Public Sub New()&lt;br /&gt;
    mEmployees = New Hashtable()&lt;br /&gt;
    mLevels = New Hashtable()&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Default Property Employee(ByVal ID As Integer) As Employee&lt;br /&gt;
    Get&lt;br /&gt;
      Dim theObject As Object&lt;br /&gt;
      theObject = mEmployees(ID)&lt;br /&gt;
      Return CType(theObject, Employee)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As Employee)&lt;br /&gt;
      mEmployees(ID) = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public Property Level(ByVal country As String) As String&lt;br /&gt;
    Get&lt;br /&gt;
      Dim theObject As Object&lt;br /&gt;
      theObject = mLevels(country)&lt;br /&gt;
      Return CType(theObject, String)&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      mLevels(country) = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
Class Employee&lt;br /&gt;
  Private mName As String&lt;br /&gt;
  Private mWage As Double&lt;br /&gt;
  Private mID As Integer&lt;br /&gt;
  Public Sub New(ByVal name As String, ByVal wage As Double,ByVal id As Integer)&lt;br /&gt;
    mName = name&lt;br /&gt;
    mWage = wage&lt;br /&gt;
    mID = id&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Property Name() As String&lt;br /&gt;
    Get&lt;br /&gt;
      Return mName&lt;br /&gt;
    End Get&lt;br /&gt;
    Set(ByVal Value As String)&lt;br /&gt;
      mName = Value&lt;br /&gt;
    End Set&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property Wage() As Double&lt;br /&gt;
    Get&lt;br /&gt;
      Return mWage&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
  Public ReadOnly Property ID() As Integer&lt;br /&gt;
    Get&lt;br /&gt;
      Return mID&lt;br /&gt;
    End Get&lt;br /&gt;
  End Property&lt;br /&gt;
  Public Sub PayRise(ByVal amount As Double)&lt;br /&gt;
    mWage += amount&lt;br /&gt;
  End Sub&lt;br /&gt;
  Public Overrides Function ToString() As String&lt;br /&gt;
    Return &amp;quot;[&amp;quot; &amp;amp; mID &amp;amp; &amp;quot;] &amp;quot; &amp;amp; mName &amp;amp; &amp;quot; &amp;quot; &amp;amp; mWage&lt;br /&gt;
  End Function&lt;br /&gt;
End Class&lt;br /&gt;
Module DefaultProperty&lt;br /&gt;
  Sub Main()&lt;br /&gt;
    Dim employer As New EmployeeList()&lt;br /&gt;
    employer(1) = New Employee(&amp;quot;A&amp;quot;, 25, 1)&lt;br /&gt;
    employer(2) = New Employee(&amp;quot;J&amp;quot;, 35, 2)&lt;br /&gt;
    employer(3) = New Employee(&amp;quot;T&amp;quot;, 17, 3)&lt;br /&gt;
    employer(4) = New Employee(&amp;quot;E&amp;quot;, 16, 4)&lt;br /&gt;
    employer.Level(&amp;quot;AA&amp;quot;) = &amp;quot;A&amp;quot;&lt;br /&gt;
    employer.Level(&amp;quot;BB&amp;quot;) = &amp;quot;B&amp;quot;&lt;br /&gt;
    employer.Level(&amp;quot;CC&amp;quot;) = &amp;quot;C&amp;quot;&lt;br /&gt;
    employer.Level(&amp;quot;DD&amp;quot;) = &amp;quot;D&amp;quot;&lt;br /&gt;
    employer.Level(&amp;quot;EE&amp;quot;) = &amp;quot;E&amp;quot;&lt;br /&gt;
    employer.Level(&amp;quot;FF&amp;quot;) = &amp;quot;F&amp;quot;&lt;br /&gt;
    Dim country As String&lt;br /&gt;
    country = &amp;quot;AA&amp;quot;&lt;br /&gt;
    Dim city As String&lt;br /&gt;
    city = employer.Level(country)&lt;br /&gt;
    If city Is Nothing Then&lt;br /&gt;
      Console.WriteLine(&amp;quot;No office in {0}&amp;quot;, country)&lt;br /&gt;
    Else&lt;br /&gt;
      Console.WriteLine(&amp;quot;Level in {0}: {1}&amp;quot;, country, city)&lt;br /&gt;
    End If&lt;br /&gt;
  End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Level in AA: A&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use Property to set private data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Module Module1&lt;br /&gt;
    Sub Main()&lt;br /&gt;
        Dim TheObject As New TheClass&lt;br /&gt;
        Console.WriteLine(&amp;quot;ThePublicData holds &amp;quot;&amp;quot;&amp;quot; &amp;amp; TheObject.ThePublicData &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        Console.WriteLine(&amp;quot;TheMethod returns &amp;quot;&amp;quot;&amp;quot; &amp;amp; TheObject.TheMethod() &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
        Console.WriteLine(&amp;quot;TheProperty holds &amp;quot;&amp;quot;&amp;quot; &amp;amp; TheObject.TheProperty &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
    End Sub&lt;br /&gt;
End Module&lt;br /&gt;
Class TheClass&lt;br /&gt;
    Public ThePublicData = &amp;quot;Hello there!&amp;quot;&lt;br /&gt;
    Private TheInternalData As String = &amp;quot;Hello there!&amp;quot;&lt;br /&gt;
    Function TheMethod() As String&lt;br /&gt;
        Return &amp;quot;Hello there!&amp;quot;&lt;br /&gt;
    End Function&lt;br /&gt;
    Public Property TheProperty() As String&lt;br /&gt;
        Get&lt;br /&gt;
            Return TheInternalData&lt;br /&gt;
        End Get&lt;br /&gt;
        Set(ByVal Value As String)&lt;br /&gt;
            TheInternalData = Value&lt;br /&gt;
        End Set&lt;br /&gt;
    End Property&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;ThePublicData holds &amp;quot;Hello there!&lt;br /&gt;
TheMethod returns &amp;quot;Hello there!&lt;br /&gt;
TheProperty holds &amp;quot;Hello there!&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>