La palabra clave amigo de C ++ permite que class Aa se designe class Bcomo amigo. Esto permite Class Bacceder a los private/ protectedmiembros de class A.
Nunca he leído nada sobre por qué esto se dejó fuera de C # (y VB.NET). La mayoría de las respuestas a esta pregunta anterior de StackOverflow parecen estar diciendo que es una parte útil de C ++ y que hay buenas razones para usarla. En mi experiencia, tendría que estar de acuerdo.
Me parece que otra pregunta es realmente preguntar cómo hacer algo similar frienden una aplicación C #. Si bien las respuestas generalmente giran en torno a clases anidadas, no parece tan elegante como usar la friendpalabra clave.
El libro original de Patrones de diseño lo usa regularmente en todos sus ejemplos.
En resumen, ¿por qué friendfalta en C # y cuál es la forma (o formas) de "mejores prácticas" de simularlo en C #?
(Por cierto, la internalpalabra clave no es la misma cosa, permite que todas las clases dentro de todo el ensamblado accedan a los internalmiembros, mientras friendque le permite otorgar a cierta clase acceso completo a exactamente otra clase)