Figure 1

Figure 1 The CLR Replaces COM, MTS, and COM+ Runtimes


Windows NT 4.0
Windows 2000
.NET Platform
Your Code
Unmanaged Visual Basic 6.0 code
Unmanaged Visual Basic 6.0 code
Managed Visual Basic .NET code
Language-specific Integration Layer
Visual Basic Runtime MSVBVM60.DLL
Visual Basic Runtime MSVBVM60.DLL
CLR Runtime MSCOREE.DLL MSCORLIB.DLL
Context Concurrency Transactions
MTS Runtime MTXEX.DLL
COM+ Runtime OLE32.DLL OLEAUT32.DLL
CLR Runtime MSCOREE.DLL MSCORLIB.DLL
Class Loading and Remoting
COM Runtime OLE32.DLL OLEAUT32.DLL
COM+ Runtime OLE32.DLL OLEAUT32.DLL
CLR Runtime MSCOREE.DLL MSCORLIB.DLL

Figure 2 Console-based App Using Visual Basic .NET

  ' in the source file Hello.vb
Module MyApp
  Sub Main()
    Dim obj As Class1 = New Class1
    System.Console.WriteLine(obj.Method1)
  End Sub
End Module

Class Class1
  Function Method1()As String
    Return "Hello Visual Basic .NET"
  End Function
End Class

Figure 3 Managed Types

  Enum Enum1
  Value1
  Value2
End Enum

Structure Structure1
  Public Field1 As Integer
  Public Field2 As Long
End Structure

Interface Interface1
  Sub Method1()
  Sub Method2()
End Interface

Class Class1
      Implements Interface1
  Public Field1 As Integer
  Private Field2 As Long
  Sub Method1() Implements Interface1.Method1
    ' implementation
  End Sub
  Sub Method2() Implements Interface1.Method2
    ' implementation
  End Sub
  Shared Sub Method3()
    ' implementation
  End Sub
End Class

Figure 4 Delegate Example

  Delegate Sub Delegate1(ByVal s As String)

Module MyApp

  Sub Sub1(ByVal s As String)
      System.Console.WriteLine("From Sub1: " & s)
  End Sub

  Sub Sub2(ByVal s As String)
      System.Console.WriteLine("From Sub2: " & s)
  End Sub

  Sub Main  
      Dim MyFunctionPointer As Delegate1
      ' longhand syntax for creating and using a delegate
      MyFunctionPointer = New Delegate1(AddressOf Sub1)
      MyFunctionPointer.Invoke("Test message 1")
      ' shorthand syntax for creating and using a delegate
      MyFunctionPointer = AddressOf Sub2
      MyFunctionPointer("Test message 2")          
  End Sub

End Module

Figure 5 A Visual Basic .NET Class

  Public Class EventClass1
  Public Event OnEvent1()
  Public Sub Method1()
    RaiseEvent OnEvent1()
  End Sub
End Class

Class ListenerClass1
  Private WithEvents Source As EventClass1
  Public Sub Register(ByVal s As EventClass1)
    Source = s
  End Sub
  Public Sub Unregister()
    Source = Nothing
  End Sub
  Private Sub TedsHandler() Handles Source.OnEvent1
    System.Console.WriteLine("Listener 1 handler executing")
  End Sub
End Class

Class ListenerClass2
  Private WithEvents Source As EventClass1
  Public Sub Register(ByVal s As EventClass1)
    Source = s
  End Sub
  Public Sub Unregister()
    source = Nothing
  End Sub
  Private Sub FredsHandler() Handles Source.OnEvent1
    System.Console.WriteLine("Listener 2 handler executing")
  End Sub
End Class

Module MyApp
  Public Sub Main()
    ' create event source object
    Dim ec As EventClass1 = New EventClass1
    ' create and sink up listener 1 object
    Dim listener1 As ListenerClass1 = New ListenerClass1
    listener1.Register(ec)
    ' create and sink up listener 2 object
    Dim listener2 As ListenerClass2 = New ListenerClass2
    listener2.Register(ec)
    ' call method which triggers events
    ec.Method1()
  End Sub
End Module