Un componente in Visual Basic

Di seguito è riportato il listato completo del codice sorgente relativo al componente stringa di esempio in Visual Basic:

Listato 1. Componente 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

Analogamente a quanto accade nelle estensioni gestite per C++ e in Visual C#, sia lo spazio dei nomi che il nome della classe sono specificati nel codice.

Questo codice inoltre illustra la nuova istruzione Option Strict che controlla se le conversioni tra tipi di variabili sono implicite o esplicite. Le conversioni implicite non richiedono alcuna sintassi particolare. Per l'esecuzione di conversioni esplicite, invece, è necessario utilizzare gli operatori di cast. Quando questa opzione è attiva è possibile eseguire in maniera implicita solo conversioni di ampliamento, quale ad esempio la conversione da un valore Integer a un valore Double. La funzionalità Option Strict inoltre può essere attivata in fase di compilazione, utilizzando l'opzione di compilazione /optionstrict+.

In Visual Basic al costruttore di una classe viene dato il nome New, a differenza di quanto avviene negli altri linguaggi dove viene assegnato il nome della classe. Poiché un costruttore non restituisce un valore, in Visual Basic viene implementato come oggetto Sub e non come oggetto Function:

Public Sub New()
...
End Sub

Verrà ora presa in considerazione l'istruzione seguente:

MyBase.New

Questa istruzione è obbligatoria e consente di chiamare il costruttore della classe base. In C++ e nelle estensioni gestite per Visual C# la chiamata al costruttore della classe base è generata automaticamente dal compilatore.

Nel codice riportato di seguito si illustra il metodo GetString, che accetta un valore integer e restituisce una stringa. In Visual Basic una subroutine che restituisce un valore prende il nome di funzione.

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

L'istruzione throw utilizzata nel metodo GetString evidenzia la nuova gestione delle eccezioni basata su runtime:

throw new IndexOutOfRangeException

Questa dichiarazione consente di creare e generare un nuovo oggetto di tipo IndexOutOfRangeException.

**Nota   **Nelle versioni precedenti di Visual Basic veniva implementato un oggetto Err.

Infine, viene creata la proprietà Count di sola lettura:

ReadOnly Property Count() As Long
   Get
      Count = StringSet.Length
   End Get
End Property

La generazione dalla riga di comando è piuttosto semplice. L'unica differenza è rappresentata dalla scrittura del componente nella sottodirectory relativa ..\Bin, come illustrato nella seguente stringa:

vbc.exe /t:library /debug+ /optionstrict+  /out:..\bin\CompVB.dll CompVB.vb

Vedere anche

Client per i componenti semplici | Riepilogo dell'esercitazione di sviluppo | Appendice A: strumenti per l'esplorazione degli spazi dei nomi