Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Ta treść jest przedrukowana za zgodą Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2. wydanie. Wydanie to zostało opublikowane w 2008 roku, a książka została w pełni zmieniona w trzecim wydaniu. Niektóre informacje na tej stronie mogą być nieaktualne.
Typ zagnieżdżony jest typem zdefiniowanym w zakresie innego typu, który jest nazywany typem otaczającym. Typ zagnieżdżony ma dostęp do wszystkich elementów członkowskich otaczającego go typu. Na przykład ma dostęp do pól prywatnych zdefiniowanych w typie otaczającym i do pól chronionych zdefiniowanych we wszystkich przodkach typu otaczającego.
Ogólnie rzecz biorąc, zagnieżdżone typy powinny być używane oszczędnie. Istnieje kilka powodów tego problemu. Niektórzy deweloperzy nie są w pełni zaznajomieni z koncepcją. Ci deweloperzy mogą na przykład mieć problemy ze składnią deklarowania zmiennych typów zagnieżdżonych. Typy zagnieżdżone są również bardzo ściśle powiązane z typami, które je otaczają, a w związku z tym nie nadają się na typy ogólnego przeznaczenia.
Typy zagnieżdżone najlepiej nadają się do odwzorowania szczegółów implementacji ich otaczających typów. Użytkownik końcowy powinien rzadko deklarować zmienne typu zagnieżdżonego i prawie nigdy nie musi jawnie tworzyć wystąpienia typu zagnieżdżonego. Na przykład, wylicznik kolekcji może być zagnieżdżonym typem tej kolekcji. Moduły wyliczające są zwykle tworzone przez ich typ otaczający, a ponieważ wiele języków obsługuje instrukcję foreach, zmienne wyliczające rzadko muszą być deklarowane przez użytkownika końcowego.
✔️ Należy używać typów zagnieżdżonych, gdy relacja między typem zagnieżdżonym a jego typem zewnętrznym jest taka, że semantyka dostępu do składowych jest pożądana.
❌ NIE UŻYWAJ publicznych typów zagnieżdżonych jako konstrukcji grupowania logicznego; w tym celu należy używać przestrzeni nazw.
❌ UNIKAJ publicznie eksponowanych typów zagnieżdżonych. Jedynym wyjątkiem jest to, że zmienne typu zagnieżdżonego muszą być zadeklarowane tylko w rzadkich scenariuszach, takich jak podklasy lub inne zaawansowane scenariusze dostosowywania.
❌ Nie używaj typów zagnieżdżonych, jeśli typ może być przywoływany poza typem zawierającym.
Na przykład wyliczenie przekazane do metody zdefiniowanej w klasie nie powinno być zdefiniowane jako typ osadzony w klasie.
❌ Nie używaj typów zagnieżdżonych, jeśli muszą być tworzone przez kod klienta. Jeśli typ ma konstruktor publiczny, prawdopodobnie nie powinien być zagnieżdżony.
Jeśli można utworzyć instancję typu, oznacza to, że typ ma własną funkcję w frameworku (można go utworzyć, używać i usunąć bez korzystania z typu zewnętrznego), co oznacza, że nie powinien być zagnieżdżany. Typy wewnętrzne nie powinny być szeroko używane poza typem zewnętrznym bez żadnej relacji z typem zewnętrznym.
❌ NIE należy definiować typu zagnieżdżonego jako elementu członkowskiego interfejsu. Wiele języków nie obsługuje takiej konstrukcji.
© Części 2005, 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.
Przedrukowane za zgodą Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition przez Krzysztofa Cwalinę i Brada Abramsa, opublikowane 22 października 2008 przez Addison-Wesley Professional w ramach serii Microsoft Windows Development.