Friend (Visual Basic)

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

解説

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

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

Friend のアクセスは、アプリケーションのプログラミング要素に望ましいレベルで、Friend は、インターフェイス、モジュール、クラス、または構造体の既定のアクセス レベルです。

モジュール、インターフェイス、または名前空間レベルでのみ Friend を使用できます。したがって、Friend の要素の申告コンテキストは、ソース ファイル、名前空間、インターフェイス、モジュール、クラス、または構造体である必要があります; これは、プロシージャにすることはできません。

Friend 修飾子は、同じ宣言内で Protected (Visual Basic) 修飾子と組み合わせて使用できます。この組み合わせで宣言された要素の両方 Friend のアクセスおよびプロテクト アクセス参照します。これらはいずれも同じアセンブリ、独自のクラス、および派生クラスからアクセスできます。Protected Friend は、クラスのメンバーでのみ指定できます。

Friend およびそのほかの比較にアクセス修飾子は、Visual Basic でのアクセス レベルが表示されます。

[!メモ]

もう一つのアセンブリが Friendとしてマークされているすべての型およびメンバーにアクセスできるようにするフレンド アセンブリであることを指定できます。詳細については、「フレンド アセンブリ (C# および Visual Basic)」を参照してください。

使用例

次のクラスでは、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 修飾子を使用して:

Class ステートメント

Const ステートメント

Declare ステートメント

Delegate ステートメント

Dim ステートメント

Enum ステートメント

Event ステートメント

Function ステートメント

Interface ステートメント

Module ステートメント

Property ステートメント

Structure ステートメント

Sub ステートメント

参照

関連項目

Public (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

InternalsVisibleToAttribute

概念

Visual Basic でのアクセス レベル

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

その他の技術情報

構造体 (Visual Basic)

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