W C ++ przyjaciel słów kluczowych pozwala class Awyznaczyć class Bjako przyjaciela. Umożliwia Class Bto dostęp do private/ protectedczłonków class A.
Nigdy nie czytałem niczego, dlaczego zostało to pominięte w C # (i VB.NET). Większość odpowiedzi na to wcześniejsze pytanie StackOverflow wydaje się mówić, że jest to użyteczna część C ++ i istnieją dobre powody, aby z niej korzystać. Z mojego doświadczenia muszę się zgodzić.
Kolejne pytanie wydaje mi się naprawdę pytać, jak zrobić coś podobnego do aplikacji friendw języku C #. Podczas gdy odpowiedzi zazwyczaj dotyczą klas zagnieżdżonych, nie wydaje się to tak eleganckie, jak użycie friendsłowa kluczowego.
Oryginalna książka Design Patterns używa jej regularnie w swoich przykładach.
Podsumowując, dlaczego friendbrakuje go w języku C # i jaki jest sposób (lub sposoby) „najlepszej praktyki” symulowania go w języku C #?
(Nawiasem mówiąc, internalsłowo kluczowe nie jest tym samym, pozwala wszystkim klasom w całym zespole na dostęp do internalelementów, a jednocześnie frienddaje pewnej klasie pełny dostęp do dokładnie jednej innej klasy)