Shadows (Visual Basic)Shadows (Visual Basic)

宣言されたプログラミング要素が、基底クラスで同じ名前を持つ要素、またはオーバーロードされた要素のセットを直しし、非表示にすることを指定します。Specifies that a declared programming element redeclares and hides an identically named element, or set of overloaded elements, in a base class.

コメントRemarks

シャドウの主な目的は (名前で非表示とも呼ばれます)、クラスメンバーの定義を保持することです。The main purpose of shadowing (which is also known as hiding by name) is to preserve the definition of your class members. 基本クラスには、既に定義されているものと同じ名前の要素を作成する変更が含まれる場合があります。The base class might undergo a change that creates an element with the same name as one you have already defined. この場合、Shadows 修飾子は、新しい基底クラス要素ではなく、定義したメンバーに解決されるように、クラスを通じて参照を強制します。If this happens, the Shadows modifier forces references through your class to be resolved to the member you defined, instead of to the new base class element.

シャドウとオーバーライドは、どちらも継承された要素を再定義しますが、その方法は大きく異なります。Both shadowing and overriding redefine an inherited element, but there are significant differences between the two approaches. 詳細については、「 Visual Basic でのシャドウ」を参照してください。For more information, see Shadowing in Visual Basic.

ルールRules

  • 宣言コンテキスト。Declaration Context. Shadows はクラスレベルでのみ使用できます。You can use Shadows only at class level. つまり、Shadows 要素の宣言コンテキストはクラスである必要があり、ソースファイル、名前空間、インターフェイス、モジュール、構造体、またはプロシージャにすることはできません。This means the declaration context for a Shadows element must be a class, and cannot be a source file, namespace, interface, module, structure, or procedure.

    1つの宣言ステートメントでは、シャドウ要素を1つだけ宣言できます。You can declare only one shadowing element in a single declaration statement.

  • 結合された修飾子。Combined Modifiers. 同じ宣言内で OverloadsOverrides、または Static と共に Shadows を指定することはできません。You cannot specify Shadows together with Overloads, Overrides, or Static in the same declaration.

  • 要素の型。Element Types. 宣言された要素は、他の任意の種類の要素でシャドウできます。You can shadow any kind of declared element with any other kind. 別のプロパティまたはプロシージャを使用してプロパティまたはプロシージャをシャドウする場合、パラメーターと戻り値の型は、基底クラスのプロパティまたはプロシージャ内のパラメーターと一致する必要はありません。If you shadow a property or procedure with another property or procedure, the parameters and the return type do not have to match those in the base class property or procedure.

  • しよう.Accessing. 基底クラスのシャドウされた要素は、通常、それをシャドウする派生クラス内からは使用できません。The shadowed element in the base class is normally unavailable from within the derived class that shadows it. ただし、次の考慮事項が適用されます。However, the following considerations apply.

    • シャドウしている要素が、それを参照するコードからアクセスできない場合は、シャドウされた要素に参照が解決されます。If the shadowing element is not accessible from the code referring to it, the reference is resolved to the shadowed element. たとえば、Private 要素が基本クラス要素をシャドウする場合、Private 要素にアクセスするためのアクセス許可を持たないコードは、代わりに基本クラス要素にアクセスします。For example, if a Private element shadows a base class element, code that does not have permission to access the Private element accesses the base class element instead.

    • 要素をシャドウする場合でも、基底クラスの型で宣言されたオブジェクトを使用して、シャドウされた要素にアクセスできます。If you shadow an element, you can still access the shadowed element through an object declared with the type of the base class. また、MyBase経由でアクセスすることもできます。You can also access it through MyBase.

Shadows 修飾子は、次のコンテキストで使用できます。The Shadows modifier can be used in these contexts:

関連項目See also