Class Module VB.Net Tutorial

Module Tester
   Sub Main()
      Console.WriteLine("Employees before instantiation: " & _
         Employee.Count)
      Dim employee1 As Employee = New Employee("S", "B")
      Dim employee2 As Employee = New Employee("B", "J")
      Console.WriteLine("Employee.Count: " & Employee.Count)
      employee1 = Nothing
      employee2 = Nothing
      System.GC.Collect() ' request garbage collection
      
      Console.WriteLine("Employee.Count: " & Employee.Count)
      
   End Sub ' Main
End Module
Class Employee
   Inherits Object
   Private mFirstName As String
   Private mLastName As String
   Private Shared mCount As Integer
   Public Sub New(ByVal firstNameValue As String, _
      ByVal lastNameValue As String)
      mFirstName = firstNameValue
      mLastName = lastNameValue
      mCount += 1 
      Console.WriteLine _
         ("Employee object constructor: " & mFirstName & _
         " " & mLastName)
   End Sub ' New
   Protected Overrides Sub Finalize()
      mCount -= 1 ' decrement mCount, resulting in one fewer object
      Console.WriteLine _
         ("Employee object finalizer: " & mFirstName & _
         " " & mLastName & "; count = " & mCount)
   End Sub ' Finalize
   Public ReadOnly Property FirstName() As String
      Get
         Return mFirstName
      End Get
   End Property ' FirstName
   ' return last name
   Public ReadOnly Property LastName() As String
      Get
         Return mLastName
      End Get
   End Property ' LastName
   ' property Count
   Public Shared ReadOnly Property Count() As Integer
      Get
         Return mCount
      End Get
   End Property ' Count
End Class
Employees before instantiation: 0
Employee object constructor: S B
Employee object constructor: B J
Employee.Count: 2
Employee object finalizer: B J; count = 1
Employee object finalizer: S B; count = 0
Employee.Count: 0