我最近在VB.Net上一直在阅读有关访问修饰符的内容,并且有些内容我无法理解:Class
(或Module
)中的元素如何继承修饰符它们的封闭块?
例如,假设您在程序集中有一个Friend
类Bla
,并使用公共方法Foo
:
Friend Class Bla
Public Sub Foo
(...)
End Class
它的行为是否与将Foo
设置为好友时的行为不同?如果是这样,你建议哪一个?
Friend Class Bla
Friend Sub Foo
(...)
End Class
谢谢!
答案 0 :(得分:1)
在我看来,是否为public
指定Friend
或Foo
并不重要,因为封闭类仅在此程序集中可用。
可以选择限制方法/属性的访问修饰符而不是类的访问修饰符。在您的示例中,方法Foo
也可以是私有的,这意味着该方法将不可用于调用者,包括同一程序集中的其他类。
可以通过类/实例访问方法。如果课程为private
,那么使用public
方法有什么用途?
编辑:在旁注中,您可以将Bla
的实例返回给调用者(在其他程序集中)。在这种情况下,如果public
被声明为Foo
,则调用者应该能够调用public
方法。这是我的假设。
答案 1 :(得分:1)
如果某人确实跳过了访问Bla
所需的反射圈,则他们无需再次呼叫Public Sub Foo
,但他们会执行Friend Sub Foo
。