Friend(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 키워드는 모듈, 인터페이스 또는 네임스페이스 수준에서만 사용할 수 있습니다. 즉, Friend 요소의 선언 컨텍스트는 소스 파일, 네임스페이스, 인터페이스, 모듈, 클래스 또는 구조체여야 하며 프로시저일 수는 없습니다.

  • 결합 한정자. 하나의 선언에서 Friend 한정자를 Protected(Visual Basic) 한정자와 함께 사용할 수 있습니다. 두 한정자를 함께 사용하면 선언된 요소에 Friend 액세스와 Protected 액세스가 모두 제공되므로 같은 어셈블리의 모든 위치, 자체 클래스 및 파생 클래스에서 요소에 액세스할 수 있습니다. 클래스의 멤버에만 Protected Friend를 지정할 수 있습니다.

동작

  • 액세스 수준. 선언 컨텍스트 내의 모든 코드에서 해당 요소에 액세스할 수 있습니다. 같은 어셈블리로 컴파일되는 서로 다른 클래스, 구조체 및 모듈의 코드에서 해당 어셈블리의 모든 Friend 요소에 액세스할 수 있습니다.

    Friend 액세스는 Protected 액세스의 상위 집합 또는 하위 집합이 아닙니다.

  • 액세스 한정자 액세스 수준을 지정하는 키워드를 액세스 한정자라고 합니다. 액세스 한정자를 비교한 내용을 보려면 Visual Basic의 액세스 수준을 참조하십시오.

Friend를 사용하는 경우

클래스와 구조체 같은 프로그래밍 요소를 해당 요소가 선언된 구성 요소만이 아닌 전체 어셈블리에서 사용하도록 해야 하는 경우가 많습니다. 그러나 소유권을 갖는 응용 프로그램 같은 경우 어셈블리 외부의 코드에서는 액세스하지 못하도록 해야 할 수도 있습니다. 이러한 방식으로 요소에 대한 액세스를 제한하려면 Friend를 사용하여 선언하면 됩니다.

응용 프로그램의 프로그래밍 요소에는 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의 개체 및 클래스