Share via


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:

MyBase.New

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

See Also

Clients for the Simple Components | Summary of Development Tutorial | Appendix A: Tools for Exploring Namespaces