Overloads
更新 : 2007 年 11 月
プロパティまたはプロシージャが、1 つ以上の既存のプロパティまたはプロシージャを、同じ名前で再度宣言することを指定します。
解説
オーバーロードとは、特定のプロパティ名またはプロシージャ名に対し、同じスコープ内で複数の定義を与えることをいいます。プロパティやプロシージャを異なるシグネチャで宣言し直すことを、シグネチャによる隠ぺいと呼ぶ場合があります。
ルール
宣言コンテキストOverloads は、プロパティまたはプロシージャの宣言ステートメント内でだけ使用できます。
修飾子の結合 同じプロシージャ宣言で Overloads と Shadows の両方を指定することはできません。
シグネチャの変更 この宣言内のシグネチャは、オーバーロードされるすべてのプロパティまたはプロシージャのシグネチャと異なっている必要があります。シグネチャは、プロパティ名またはプロシージャ名の他に、次の要素で構成されます。
パラメータの数
パラメータの順序
パラメータのデータ型
型パラメータの数 (ジェネリック プロシージャの場合)
戻り値の型 (変換演算子のプロシージャの場合のみ)
すべてのオーバーロードは同じ名前を持つ必要があります。ただし、各オーバーロードは、上記の 1 つ以上の要素において、他のすべてと異なっていることが必要です。これは、コードがプロパティまたはプロシージャを呼び出すとき、コンパイラがどのバージョンを使えばよいかを区別するために必要です。
許可されない変更 以下の要素を 1 つでも変更した場合、プロパティまたはプロシージャのオーバーロードは有効ではありません。以下の要素はシグニチャには含まれません。
値を返すかどうか (プロシージャの場合)
戻り値のデータ型 (変換演算子の場合を除く)
パラメータ名または型パラメータ名
型パラメータに対する制約 (ジェネリック プロシージャの場合)
パラメータを修飾するキーワード (ByRef や Optional など)
プロパティやプロシージャを修飾するキーワード (Public や Shared など)
修飾子の省略 同じクラスに複数のオーバーロード プロパティまたはオーバーロード プロシージャを定義する場合は、Overloads 修飾子を指定する必要はありません。ただし、1 つの宣言で Overloads を使用する場合は、すべての宣言で Overloads を使用する必要があります。
シャドウとオーバーロードOverloads は基本クラスの既存のメンバまたはオーバーロードされたメンバをシャドウするためにも使用できます。この方法で Overloads キーワードを使う場合は、基本クラスのメンバと名前もパラメータ リストも同じプロパティまたはメソッドを宣言し、Shadows キーワードは指定しません。
修飾子 Overloads は、次の構文で使用します。