Friend (Visual Basic)

1 つまたは複数の宣言されたプログラミング要素が、その宣言を含むアセンブリからのみアクセス可能かどうかを示します。

解説

次のクラスでは、Friend 修飾子を使用すると、同じアセンブリ内の他のプログラミング要素が特定のメンバーにアクセスできるようになります。

Class CustomerInfo

    Private p_CustomerID As Integer

    Public ReadOnly Property CustomerID() As Integer
        Get
            Return p_CustomerID
        End Get
    End Property

    ' Allow friend access to the empty constructor.
    Friend Sub New()

    End Sub

    ' Require that a customer identifier be specified for the public constructor.
    Public Sub New(ByVal customerID As Integer)
        p_CustomerID = customerID
    End Sub

    ' Allow friend programming elements to set the customer identifier.
    Friend Sub SetCustomerID(ByVal customerID As Integer)
        p_CustomerID = customerID
    End Sub
End Class

規則

  • 宣言コンテキスト。 Friend は、モジュール レベル、インターフェイス レベル、または名前空間レベルでのみ使用できます。 つまり、Friend の宣言コンテキストは、ソース ファイル、名前空間、インターフェイス、モジュール、クラス、構造体のいずれかである必要があり、プロシージャでは宣言できません。

  • 修飾子の結合。 Friend 修飾子は、同じ宣言内で Protected (Visual Basic) 修飾子と組み合わせて使用できます。 この組み合わせを使うと、宣言される要素にはフレンド アクセスとプロテクト アクセスの両方が設定され、同じアセンブリ、要素自体のクラス、およびすべての派生クラスから要素にアクセスできます。 Protected Friend は、クラスのメンバーでのみ指定できます。

Behavior

  • アクセス レベル。 宣言コンテキスト内のすべてのコードは、自らの要素にアクセスできます。 同じアセンブリにコンパイルされる他のクラス、構造体、モジュール内のコードは、そのアセンブリ内のすべての Friend 要素にアクセスできます。

    フレンド アクセスは、プロテクト アクセスのスーパーセットでもサブセットでもありません。

  • アクセス修飾子。 アクセス レベルを指定するキーワードは、アクセス修飾子と呼ばれます。 アクセス修飾子の比較については、「Visual Basic でのアクセス レベル」を参照してください。

フレンドを使用する状況

多くの場合、クラスや構造体のようなプログラミング要素は、それを宣言したコンポーネント内だけでなく、アセンブリ全体で使用できるようにします。 しかし、プロプライエタリ アプリケーションである場合など、アセンブリ外部のコードからはアクセスできないようにする必要がある場合もあります。 このような形で要素へのアクセスを制限するには、要素を Friend で宣言します。

フレンド アクセスは、アプリケーションのプログラミング要素に望ましいレベルとして多く利用されます。 特に宣言しない場合、インターフェイス、モジュール、クラス、構造体の既定のアクセス レベルは Friend です。

Friend 修飾子は、次の場合に使用できます。

Class ステートメント

Const ステートメント

Declare ステートメント

Delegate ステートメント

Dim ステートメント

Enum ステートメント

Event ステートメント

Function ステートメント

Interface ステートメント

Module ステートメント

Property ステートメント

Structure ステートメント

Sub ステートメント

参照

参照

Public (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

概念

Visual Basic でのアクセス レベル

Visual Basic におけるプロシージャ

Visual Basic のオブジェクトとクラス

その他の技術情報

構造体 (Visual Basic)