Friend (Visual Basic)Friend (Visual Basic)

1つ以上の宣言されたプログラミング要素が、その宣言を含むアセンブリ内からのみアクセス可能であることを指定します。Specifies that one or more declared programming elements are accessible only from within the assembly that contains their declaration.


多くの場合、クラスや構造体などのプログラミング要素は、それを宣言するコンポーネントだけでなく、アセンブリ全体で使用する必要があります。In many cases, you want programming elements such as classes and structures to be used by the entire assembly, not only by the component that declares them. ただし、アセンブリ外部のコードからアクセスできないようにすることもできます (アプリケーションが独自に作成されている場合など)。However, you might not want them to be accessible by code outside the assembly (for example, if the application is proprietary). この方法で要素へのアクセスを制限する場合は、Friend 修飾子を使用して宣言できます。If you want to limit access to an element in this way, you can declare it by using the Friend modifier.

同じアセンブリにコンパイルされる他のクラス、構造体、およびモジュール内のコードは、そのアセンブリ内のすべての Friend 要素にアクセスできます。Code in other classes, structures, and modules that are compiled to the same assembly can access all the Friend elements in that assembly.

多くの場合、Friend アクセスはアプリケーションのプログラミング要素に優先されるレベルであり、Friend はインターフェイス、モジュール、クラス、または構造体の既定のアクセスレベルです。Friend access is often the preferred level for an application's programming elements, and Friend is the default access level of an interface, a module, a class, or a structure.

Friend は、モジュール、インターフェイス、または名前空間レベルでのみ使用できます。You can use Friend only at the module, interface, or namespace level. したがって、Friend 要素の宣言コンテキストは、ソースファイル、名前空間、インターフェイス、モジュール、クラス、または構造体である必要があります。プロシージャを指定することはできません。Therefore, the declaration context for a Friend element must be a source file, a namespace, an interface, a module, a class, or a structure; it can't be a procedure.


Protected Friendアクセス修飾子を使用することもできます。これにより、クラスメンバーは、クラス内、派生クラス、およびクラスが定義されている同じアセンブリからアクセスできます。You can also use the Protected Friend access modifier, which makes a class member accessible from within that class, from derived classes, and from the same assembly in which the class is defined. クラス内および同じアセンブリ内の派生クラスからメンバーへのアクセスを制限するには、Private Protectedアクセス修飾子を使用します。To restrict access to a member from within its class and from derived classes in the same assembly, you use the Private Protected access modifier.

Friend とその他のアクセス修飾子の比較については、「Visual Basic でのアクセス レベル」を参照してください。For a comparison of Friend and the other access modifiers, see Access levels in Visual Basic.


別のアセンブリがフレンドアセンブリであることを指定できます。これにより、Friendとしてマークされているすべての型とメンバーにアクセスできるようになります。You can specify that another assembly is a friend assembly, which allows it to access all types and members that are marked as Friend. 詳細については、Friend アセンブリに関するページを参照してください。For more information, see Friend Assemblies.


次のクラスは、Friend 修飾子を使用して、同じアセンブリ内の他のプログラミング要素が特定のメンバーにアクセスできるようにします。The following class uses the Friend modifier to allow other programming elements within the same assembly to access certain members.

Class CustomerInfo

    Private p_CustomerID As Integer

    Public ReadOnly Property CustomerID() As Integer
            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 修飾子を使用できます。You can use the Friend modifier in these contexts:

Class ステートメントClass Statement

Const ステートメントConst Statement

Declare ステートメントDeclare Statement

Delegate ステートメントDelegate Statement

Dim ステートメントDim Statement

Enum ステートメントEnum Statement

Event ステートメントEvent Statement

Function ステートメントFunction Statement

Interface ステートメントInterface Statement

Module ステートメントModule Statement

Property ステートメントProperty Statement

Structure ステートメントStructure Statement

Sub ステートメントSub Statement

参照See also