A Component in Visual Basic
Here is the full source-code listing for the sample string component in Visual Basic:
Listing 1. Component in Visual Basic (CompVB.vb)
Option Explicit Option Strict Imports System Namespace CompVB Public Class StringComponent Private StringSet(3) As String Public Sub New() MyBase.New StringSet(0) = "Visual Basic String 0" StringSet(1) = "Visual Basic String 1" StringSet(2) = "Visual Basic String 2" StringSet(3) = "Visual Basic String 3" End Sub Public Function GetString(ByVal index as Integer) As String If ((index < 0) or (index >= Count)) then throw new IndexOutOfRangeException End If GetString = StringSet(index) End Function ReadOnly Property Count() As Long Get Count = StringSet.Length End Get End Property End Class End Namespace
Like with Managed Extensions for C++ and Visual C#, both the namespace and the class name are specified in code.
This code also introduces the new Option Strict statement, which controls whether variable-type conversions are implicit or explicit. Implicit conversions can be done without any special syntax. Explicit conversions, on the other hand, must be done using the cast operators. If this option is turned on, only widening conversions — for example, from an Integer to a Double — can be done implicitly. The Option Strict functionality can also be activated at compile time, by using the /optionstrict+ compiler switch.
In Visual Basic, a class constructor is given the name New, rather than the name of the class as in the other languages. Because a constructor does not return a value, it is implemented in Visual Basic as a Sub rather than a Function:
Public Sub New() ... End Sub
Also note this statement:
This statement, which is required, calls the base-class constructor. In C++ and Managed Extensions for Visual C#, the call to the base-class constructor is automatically generated by the compiler.
Here is the GetString method, which takes an integer and returns a string (in Visual Basic, a subroutine that returns a value is called a function):
Public Function GetString(ByVal index as Integer) As String If ((index < 0) or (index >= Count)) then throw new IndexOutOfRangeException End If GetString = StringSet(index) End Function
The throw statement in the GetString method highlights the new, runtime-based exception handling:
throw new IndexOutOfRangeException
This statement creates — and throws — a new object of type IndexOutOfRangeException.
Note Previous versions of the Visual Basic runtime implemented an Err.
Finally, you create the read-only Count property:
ReadOnly Property Count() As Long Get Count = StringSet.Length End Get End Property
Building from the command line is quite simple. The only change is to write the component to the relative ..\Bin subdirectory, as shown here:
vbc.exe /t:library /debug+ /optionstrict+ /out:..\bin\CompVB.dll CompVB.vb