Friend (Visual Basic)

指定只能从包含其声明的程序集内部访问一个或多个声明的编程元素。

注解

在许多情况下,我们都希望类和结构等编程元素能够供整个程序集使用,而不是只能由声明它们的组件使用。 但是,你可能不希望程序集外的代码访问它们(例如,当应用程序是专有应用程序时)。 如果要按此方式限制对元素的访问,可以使用 Friend 修饰符对其进行声明。

编译到同一程序集的其他类、结构和模块中的代码可以访问该程序集中的所有 Friend 元素。

Friend 访问通常是应用程序编程元素的首选级别,而 Friend 是接口、模块、类或结构的默认访问级别。

只能在模块、接口或命名空间级别使用 Friend。 因此,Friend 元素的声明上下文必须是源文件、命名空间、接口、模块、类或结构,而不能是过程。

注意

此外,还可使用 Protected Friend 访问修饰符,使类成员可从该类内部、派生类和定义该类的同一程序集中访问。 要将成员类的访问限制为从其类内部以及从同一程序集的派生类中访问,请使用 Private Protected 访问修饰符。

有关 Friend 与其他访问修饰符的比较,请参阅 Visual Basic 中的访问级别

注意

可以指定另一个程序集是友元程序集,允许它访问标记为 Friend 的所有类型和成员。 有关详细信息,请参阅友元程序集

示例

以下类使用 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 Statement

Delegate 语句

Dim 语句

Enum 语句

Event 语句

Function 语句

Interface 语句

Module 语句

Property Statement

Structure 语句

Sub 语句

另请参阅