Visual Basic コンパイラは、オブジェクトがオブジェクト変数に割り当てられるときに、 binding
と呼ばれるプロセスを実行します。 オブジェクトは、特定のオブジェクト型として宣言された変数に割り当てられると 、事前バインド されます。 早期バインド オブジェクトを使用すると、コンパイラはメモリを割り当て、アプリケーションを実行する前に他の最適化を実行できます。 たとえば、次のコード フラグメントでは、 FileStream型の変数を宣言しています。
' Create a variable to hold a new object.
Dim FS As System.IO.FileStream
' Assign a new object to the variable.
FS = New System.IO.FileStream("C:\tmp.txt",
System.IO.FileMode.Open)
FileStreamは特定のオブジェクト型であるため、FS
に割り当てられたインスタンスは事前バインドされます。
これに対し、オブジェクトは、Object
型として宣言された変数に割り当てられると遅延バインドされます。 この型のオブジェクトは、任意のオブジェクトへの参照を保持できますが、事前バインドされたオブジェクトの利点の多くはありません。 たとえば、次のコード フラグメントは、 CreateObject
関数によって返されるオブジェクトを保持するオブジェクト変数を宣言します。
' To use this example, you must have Microsoft Excel installed on your computer.
' Compile with Option Strict Off to allow late binding.
Sub TestLateBinding()
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
xlApp = CreateObject("Excel.Application")
' Late bind an instance of an Excel workbook.
xlBook = xlApp.Workbooks.Add
' Late bind an instance of an Excel worksheet.
xlSheet = xlBook.Worksheets(1)
xlSheet.Activate()
' Show the application.
xlSheet.Application.Visible = True
' Place some text in the second row of the sheet.
xlSheet.Cells(2, 2) = "This is column B row 2"
End Sub
早期バインディングの利点
可能な限り早期バインドされたオブジェクトを使用する必要があります。これは、コンパイラがより効率的なアプリケーションを生成する重要な最適化を行うことができるためです。 事前バインドされたオブジェクトは遅延バインディング オブジェクトよりも大幅に高速であり、使用されているオブジェクトの種類を正確に指定することで、コードの読み取りと保守を容易にします。 早期バインディングのもう 1 つの利点は、Visual Studio 統合開発環境 (IDE) がコードの編集時に使用しているオブジェクトの種類を正確に判断できるため、コードの自動補完や動的ヘルプなどの便利な機能を有効にできることです。 早期バインディングでは、プログラムのコンパイル時にコンパイラがエラーを報告できるため、実行時エラーの数と重大度が低下します。
注
遅延バインディングは、 Public
として宣言されている型メンバーへのアクセスにのみ使用できます。
Friend
またはProtected Friend
として宣言されたメンバーにアクセスすると、実行時エラーが発生します。
こちらも参照ください
- CreateObject
- オブジェクトの有効期間: オブジェクトの作成方法と破棄方法
- オブジェクト データ型
.NET