Overloads

更新 : 2007 年 11 月

プロパティまたはプロシージャが、1 つ以上の既存のプロパティまたはプロシージャを、同じ名前で再度宣言することを指定します。

解説

オーバーロードとは、特定のプロパティ名またはプロシージャ名に対し、同じスコープ内で複数の定義を与えることをいいます。プロパティやプロシージャを異なるシグネチャで宣言し直すことを、シグネチャによる隠ぺいと呼ぶ場合があります。

ルール

  • 宣言コンテキストOverloads は、プロパティまたはプロシージャの宣言ステートメント内でだけ使用できます。

  • 修飾子の結合 同じプロシージャ宣言で Overloads と Shadows の両方を指定することはできません。

  • シグネチャの変更 この宣言内のシグネチャは、オーバーロードされるすべてのプロパティまたはプロシージャのシグネチャと異なっている必要があります。シグネチャは、プロパティ名またはプロシージャ名の他に、次の要素で構成されます。

    • パラメータの数

    • パラメータの順序

    • パラメータのデータ型

    • 型パラメータの数 (ジェネリック プロシージャの場合)

    • 戻り値の型 (変換演算子のプロシージャの場合のみ)

    すべてのオーバーロードは同じ名前を持つ必要があります。ただし、各オーバーロードは、上記の 1 つ以上の要素において、他のすべてと異なっていることが必要です。これは、コードがプロパティまたはプロシージャを呼び出すとき、コンパイラがどのバージョンを使えばよいかを区別するために必要です。

  • 許可されない変更 以下の要素を 1 つでも変更した場合、プロパティまたはプロシージャのオーバーロードは有効ではありません。以下の要素はシグニチャには含まれません。

    • 値を返すかどうか (プロシージャの場合)

    • 戻り値のデータ型 (変換演算子の場合を除く)

    • パラメータ名または型パラメータ名

    • 型パラメータに対する制約 (ジェネリック プロシージャの場合)

    • パラメータを修飾するキーワード (ByRef や Optional など)

    • プロパティやプロシージャを修飾するキーワード (Public や Shared など)

  • 修飾子の省略 同じクラスに複数のオーバーロード プロパティまたはオーバーロード プロシージャを定義する場合は、Overloads 修飾子を指定する必要はありません。ただし、1 つの宣言で Overloads を使用する場合は、すべての宣言で Overloads を使用する必要があります。

  • シャドウとオーバーロードOverloads は基本クラスの既存のメンバまたはオーバーロードされたメンバをシャドウするためにも使用できます。この方法で Overloads キーワードを使う場合は、基本クラスのメンバと名前もパラメータ リストも同じプロパティまたはメソッドを宣言し、Shadows キーワードは指定しません。

修飾子 Overloads は、次の構文で使用します。

Function ステートメント

Operator ステートメント

Property ステートメント

Sub ステートメント

参照

処理手順

方法 : 変換演算子を定義する

概念

プロシージャのオーバーロード

Visual Basic におけるジェネリック型

演算子プロシージャ

参照

Shadows