W C ++ przyjaciel słów kluczowych pozwala class A
wyznaczyć class B
jako przyjaciela. Umożliwia Class B
to dostęp do private
/ protected
czł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 friend
w języku C #. Podczas gdy odpowiedzi zazwyczaj dotyczą klas zagnieżdżonych, nie wydaje się to tak eleganckie, jak użycie friend
słowa kluczowego.
Oryginalna książka Design Patterns używa jej regularnie w swoich przykładach.
Podsumowując, dlaczego friend
brakuje go w języku C # i jaki jest sposób (lub sposoby) „najlepszej praktyki” symulowania go w języku C #?
(Nawiasem mówiąc, internal
słowo kluczowe nie jest tym samym, pozwala wszystkim klasom w całym zespole na dostęp do internal
elementów, a jednocześnie friend
daje pewnej klasie pełny dostęp do dokładnie jednej innej klasy)