Вопрос

На этот вопрос: Что такое C # эквивалент друга?, Я бы лично ответил «внутреннее», как JA сделал среди ответов! Тем не менее, Джон Скелет говорит, что нет прямой эквивалентности друзей VB в C #. Если Jon Skeet так говорит, я не буду тем, кто говорил иначе! ;П

Мне интересно, как ключевое слово внутренний (C #) не быть эквивалентным Друг (Vbnet), когда их соответствующие определения:

Друг vbnet.

То Друг (Visual Basic) Ключевое слово в заявлении декларации указывает, что элементы могут быть доступны из одной и той же сборки, но не из-за пределов сборки. [...

Внутренний C #

Внутренний: Доступ ограничен текущей сборкой.

Для моего понимания эти определения значат совсем так же для меня.

Затем, соответственно, когда я кодирую в VB.NET, я использую Друг Ключевое слово, чтобы указать, что класс или свойство должны быть доступны только внутри сборки, где он объявлен. То же самое в C #, я использую внутренний Ключевое слово, чтобы указать то же самое.

  1. Я делаю что-то или что-то не так с этой точки зрения?

  2. Какие уточнения я не получаю?

  3. Может кто-нибудь, пожалуйста, объясните, как или в каком другом и внутренних не являются прямыми эквивалентами?

Заранее спасибо за любой из ваших ответов!

Это было полезно?

Решение

Я сказал, что нет прямого эквивалента C ++ Концепция «друга». Это не то же самое, что VB.Net Friend концепция, которая действительно эквивалентна internal в C #.

Контекст важен - не думайте, что то же самое слово означает точно так же на всех языках ... "Static" - это классический пример :)

Другие советы

Ответ Джона (оригинал) позволяет понять, что он ссылается на C / C ++ friend Ключевое слово, которое предоставляет частный доступ к другому классу. Нет прямого эквивалента в C #, но есть способ расширить internal на другую сборку, в значительной степени для тестирования.

Насколько я понимаю, vb.net Friend такой же, как C # internal.

(Я написал выше, так как Джон добавил здесь ответ.)

При сравнении .NET Языки VB's friend приравнивается к C # internal. Отказ Значение, все, что помечено как таковое, может быть доступна только из того же проекта / сборки. Это можно комбинировать с protected для большего контроля над видимостью.

То InternalsVisibleTo атрибут может быть полезен для целей тестирования; Несмотря на имя, это относится к VB столько, сколько делает с C #. Следует отметить, что VB не поддерживал использование InternalsVisibleTo до .NET 4.

Существует грубый эквивалент ключевого слова C ++ в управляемом коде. Хотя это работает на уровне сборки, а не на уровне класса. Вы можете использовать [InternalsVisibleTo] атрибут.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top