VB.Net Tutorial/Development/Finalize

Материал из VB Эксперт
Перейти к: навигация, поиск

Display order in which base-class and derived-class constructors and finalizers are called

Module Tester
   Sub Main()
      Dim circle1, circle2 As Circle
      circle1 = New Circle(72, 29, 4.5) " instantiate objects
      circle2 = New Circle(5, 5, 10)
      circle1 = Nothing " mark objects for garbage collection
      circle2 = Nothing
      System.GC.Collect() " request garbage collector to execute
   End Sub " Main 
End Module 
Public Class Point
   Private mX, mY As Integer
   Public Sub New()
      Console.WriteLine("Point constructor: {0}", Me)
   End Sub " New
   Public Sub New(ByVal xValue As Integer, _
      ByVal yValue As Integer)
      Console.WriteLine("Point constructor: {0}", Me)
   End Sub " New
   Protected Overrides Sub Finalize()
      Console.WriteLine("Point Finalizer: {0}", Me)
      MyBase.Finalize() " call Object finalizer
   End Sub 
   " return String representation of Point
   Public Overrides Function ToString() As String
      Return "[" & mX & ", " & mY & "]"
   End Function " ToString
End Class

Public Class Circle
   Inherits Point 
   Private mRadius As Double
   Public Sub New()
      Console.WriteLine("Circle constructor: {0}", Me)
   End Sub " New
   Public Sub New(ByVal xValue As Integer, _
      ByVal yValue As Integer, ByVal radiusValue As Double)
      MyBase.New(xValue, yValue)
      Console.WriteLine("Circle constructor: {0}", Me)
   End Sub " New
   Protected Overrides Sub Finalize()
      Console.WriteLine("Circle Finalizer: {0}", Me)
      MyBase.Finalize() " call Point finalizer
   End Sub " Finalize
   Public Overrides Function ToString() As String
      Return "Center = " & MyBase.ToString() & _
         "; Radius = " & mRadius
   End Function " ToString
End Class
Point constructor: Center = [0, 0]; Radius = 0
Circle constructor: Center = [0, 0]; Radius = 0
Point constructor: Center = [0, 0]; Radius = 0
Circle constructor: Center = [0, 0]; Radius = 0
Circle Finalizer: Center = [0, 0]; Radius = 0
Point Finalizer: Center = [0, 0]; Radius = 0
Circle Finalizer: Center = [0, 0]; Radius = 0
Point Finalizer: Center = [0, 0]; Radius = 0

Override Finalize method

Public Class Numbered
    Private m_Number As Integer
    Public Sub New(ByVal my_number As Integer)
        m_Number = my_number
    End Sub
    " Garbage collection started.
    Protected Overrides Sub Finalize()
        Console.WriteLine("Finalize Number: " & m_Number)
    End Sub
End Class

public class Test
   public Shared Sub Main
        Dim new_numbered As New Numbered(1)
        new_numbered = New Numbered(2)
   End Sub
End class
Finalize Number: 2
Finalize Number: 1