在 Visual Basic 中,Friend 修饰符定义了类成员(方法、属性、变量)在同一程序集内可用,但在程序集外不可用。这类似于 C# 中的 internal。这种访问级别有助于在公开 API 的同时保护代码的内部实现。
使用示例:
' 在同一项目/程序集内 Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class
调用 InternalHelper 类的方法只能在当前程序集内进行。
何时应用 Friend:
Friend 访问修饰符与 Protected 有何不同?在另一程序集中的子类中,声明为 Friend 的方法能否被看到?
答案:
Protected Friend Sub MyMethod() ' 在程序集内和外部子类中可访问 End Sub
故事
在一个大型项目中,所有支持类的逻辑都被声明为 Public,这使它们对外部集成商开放。改为 Friend 后消除了在模块外使用内部方法的风险,并简化了架构的维护。
故事
由于访问错误(使用了 Protected 而不是 Friend),辅助方法对放置在同一项目中但不在类层次结构中的单元测试不可用。已修正为 Friend 以支持方便的测试。
故事
一个开发者试图使用 Friend 将方法暴露给从另一个程序集加载的插件。结果是插件无法访问所需的方法。解决方案是实现带有 Public 方法的接口,Friend 仅用于内部需求。