ключевое слово дружбы С++ позволяет class A
назначать class B
своим другом. Это позволяет class B
получить доступ к private
/protected
членам class A
.
Я никогда не читал ничего о том, почему это было исключено из С# (и VB.NET). Большинство ответов на этот qaru.site/info/21502/..., похоже, говорят, что это полезная часть С++, и есть веские причины для ее использования. По моему опыту, я должен согласиться.
Другим question кажется, что я действительно спрашиваю, как сделать что-то похожее на friend
в приложении С#. Хотя ответы обычно вращаются вокруг вложенных классов, это выглядит не так элегантно, как использование ключевого слова friend
.
Оригинальная Design Patterns book регулярно использует ее во всех своих примерах.
Итак, вкратце, почему friend
отсутствует на С#, и каков способ "лучшей практики" имитировать его на С#?
(Кстати, ключевое слово internal
- это не одно и то же, оно позволяет всем классам всей сборки обращаться к членам internal
, а friend
позволяет дать определенному классу полный доступ к одному другой класс)