Почему 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 позволяет дать определенный классполный доступ вровно один другой класс)