Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
Console.WriteLine("Students before instantiation: " & Student.Count)
Dim student1 As Student = New Student("A", "B")
Dim student2 As Student = New Student("C", "D")
' output of student2 after instantiation
Console.WriteLine("Students after instantiation: " & vbCrLf & _
"via Student.Count: " & Student.Count)
' display name of first and second student
Console.WriteLine(vbCrLf & "Students 1: " & _
student1.FirstName & " " & student1.LastName & _
vbCrLf & "Student 2: " & student2.FirstName & " " & _
student2.LastName)
' mark student1 and student2 for garbage collection
student1 = Nothing
student2 = Nothing
System.GC.Collect() ' request garbage collection
End Sub
End Class
' Class Student uses Shared variable.
Class Student
Inherits Object
Private mFirstName As String
Private mLastName As String
' number of objects in memory
Private Shared mCount As Integer
' Student constructor
Public Sub New(ByVal firstNameValue As String, _
ByVal lastNameValue As String)
mFirstName = firstNameValue
mLastName = lastNameValue
mCount += 1 ' increment shared count of students
Console.WriteLine _
("Student object constructor: " & mFirstName & _
" " & mLastName)
End Sub ' New
' finalizer method decrements Shared count of students
Protected Overrides Sub Finalize()
mCount -= 1 ' decrement mCount, resulting in one fewer object
Console.WriteLine _
("Student object finalizer: " & mFirstName & _
" " & mLastName & "; count = " & mCount)
End Sub ' Finalize
' return first name
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 ' Student
|