“公众\朋友”与“朋友\朋友”

时间:2011-04-21 18:36:42

标签: vb.net friend access-modifiers internal

我最近在VB.Net上一直在阅读有关访问修饰符的内容,并且有些内容我无法理解:Class(或Module)中的元素如何继承修饰符它们的封闭块?

例如,假设您在程序集中有一个FriendBla,并使用公共方法Foo

Friend Class Bla
    Public Sub Foo
    (...)
End Class

它的行为是否与将Foo设置为好友时的行为不同?如果是这样,你建议哪一个?

Friend Class Bla
    Friend Sub Foo
    (...)
End Class

谢谢!

2 个答案:

答案 0 :(得分:1)

在我看来,是否为public指定FriendFoo并不重要,因为封闭类仅在此程序集中可用。

可以选择限制方法/属性的访问修饰符而不是类的访问修饰符。在您的示例中,方法Foo也可以是私有的,这意味着该方法将不可用于调用者,包括同一程序集中的其他类。

可以通过类/实例访问方法。如果课程为private,那么使用public方法有什么用途?

编辑:在旁注中,您可以将Bla的实例返回给调用者(在其他程序集中)。在这种情况下,如果public被声明为Foo,则调用者应该能够调用public方法。这是我的假设。

答案 1 :(得分:1)

如果某人确实跳过了访问Bla所需的反射圈,则他们无需再次呼叫Public Sub Foo,但他们会执行Friend Sub Foo