Почему C # не предоставляет ключевое слово «друг» в стиле C ++? [закрыто]
C ++ ключевое слово друга позволяетclass A
обозначитьclass B
как его друг. Это позволяетClass B
чтобы получить доступ кprivate
/protected
Членыclass A
.
Я никогда не читал ничего о том, почему это осталось за пределами C # (и VB.NET). Большинство ответов на этопредыдущий вопрос StackOverflow кажется, говорят, что это полезная часть C ++, и есть веские причины для ее использования. По своему опыту я бы согласился.
Другаявопрос мне кажется, действительно спрашивают, как сделать что-то похожее наfriend
в приложении C #. Хотя ответы, как правило, связаны с вложенными классами, это не так элегантно, как использованиеfriend
ключевое слово.
ОригиналКнига "Шаблоны дизайна" регулярно использует его в своих примерах.
Итак, в заключение, почемуfriend
отсутствует в C #, и каков «наилучший метод» (или способы) его моделирования в C #?
(Кстати,internal
ключевое словоне то же самое, это позволяетвсе классы во всей сборке для доступаinternal
члены, аfriend
позволяет дать определенный классполный доступ вровно один другой класс)