Visual Basic でのコンポーネント
Visual Basic でのサンプル文字列コンポーネントの完全なソース コードを次に示します。
リスト 1. 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
C++ マネージ拡張や Visual C# の場合と同様に、名前空間とクラス名の両方がコードで指定されています。
このコードでは、変数の型を明示的または暗黙的のどちらの方法で変換するかを制御する新しい Option Strict ステートメントも取り入れています。暗黙の型変換は、特別な構文を使用しなくても実行できます。これに対して、明示的な型変換は、キャスト演算子を使用して行う必要があります。このオプションをオンにすると、たとえば Integer から Double への変換のような、拡大変換だけを暗黙的に行うことができます。Option Strict 機能は、/optionstrict+ コンパイラ スイッチを使用して、コンパイル時にアクティブにすることもできます。
Visual Basic では、他の言語とは異なり、クラス コンストラクタの名前は、クラスの名前ではなく New という名前になります。コンストラクタは値を返さないため、Visual Basic のコンストラクタは Function としてではなく Sub として実装されます。
Public Sub New()
...
End Sub
また、次のステートメントにも注意してください。
MyBase.New
このステートメントは必須で、基本クラス コンストラクタを呼び出します。C++ マネージ拡張および Visual C# では、基本クラス コンストラクタへの呼び出しは、それぞれのコンパイラによって自動的に生成されます。
整数を受け取って文字列を返す GetString メソッドを次に示します。Visual Basic では、値を返すサブルーチンを関数と呼びます。
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
GetString メソッド内の throw ステートメントは、新しいランタイム ベースの例外処理を示しています。
throw new IndexOutOfRangeException
このステートメントは、IndexOutOfRangeException 型の新しいオブジェクトを作成してスローします。
**メモ **Visual Basic ランタイムの以前のバージョンは、Err を実装していました。
最後に、読み取り専用の Count プロパティを次のように作成します。
ReadOnly Property Count() As Long
Get
Count = StringSet.Length
End Get
End Property
コマンド ラインからのビルドは非常に簡単です。唯一の変更点は、次に示すように、相対位置を示す ..\Bin サブディレクトリにコンポーネントを書き込むことだけです。
vbc.exe /t:library /debug+ /optionstrict+ /out:..\bin\CompVB.dll CompVB.vb