"Public \ Friend" против "Friend \ Friend" - PullRequest
2 голосов
/ 21 апреля 2011

В последнее время я читал о модификаторах доступа в VB.Net, и есть кое-что, чего я не могу понять: как элементы в Class (или Module) наследуют модификаторы их блока

Например, предположим, что у вас есть Friend класс Bla в сборке с открытым методом Foo:

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

Он ведет себя иначе, чем когда Foo установлен в Friend? Если да, то какой из них вы посоветуете?

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 ноября 2012

Если кто-то прыгает через отражательные кольца, необходимые для доступа к Bla, ему не нужно делать это снова, чтобы затем вызвать Public Sub Foo, но он делает для Friend Sub Foo.

1 голос
/ 21 апреля 2011

На мой взгляд, не имеет значения, указан ли public или Friend для Foo, потому что класс включения доступен только в этой сборке.

Можно ограничить доступмодификатор для метода / свойства, чем у класса.В вашем примере метод Foo также может быть private`, что означает, что метод не будет доступен для вызывающих, включая другие классы в той же сборке.

Доступ к методам можно получить через класс / экземпляр,Если класс private, то какой метод public используется?

РЕДАКТИРОВАТЬ: В примечании стороны можно вернуть экземпляр Bla вызывающей стороне (которая находится вдругая сборка).В этом случае вызывающая сторона должна иметь возможность вызывать метод public, если объявлено Foo public.Это мое предположение.

...