Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Замечание
Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.
Вложенный тип — это тип, определенный в области другого типа, который называется окружающим типом. Вложенный тип имеет доступ ко всем членам своего внешнего типа. Например, он имеет доступ к частным полям, определенным в охватывающем типе, и к защищенным полям, определенным во всех предках охватывающего типа.
Как правило, вложенные типы следует использовать умеренно. Для этого есть несколько причин. Некоторые разработчики не полностью знакомы с концепцией. Например, у этих разработчиков могут возникнуть проблемы с синтаксисом объявления переменных вложенных типов. Вложенные типы также очень тесно связаны с их вложенными типами, и как таковые не подходят для типов общего назначения.
Вложенные типы лучше всего подходят для моделирования деталей реализации их охватывающих типов. Конечный пользователь должен редко объявлять переменные вложенного типа и почти никогда не должен явно создавать экземпляры вложенных типов. Например, перечислитель коллекции может являться вложенным типом этой коллекции. Перечислители обычно создаются своим ограничивающим типом, и поскольку многие языки поддерживают оператор foreach, переменные перечислителя редко требуется объявлять конечным пользователем.
✔️ Используйте вложенные типы, если связь между вложенным типом и его внешним типом является желательной семантикой доступности членов.
❌ НЕ используйте общедоступные вложенные типы в качестве логической конструкции группирования; используйте пространства имен для этого.
❌ ИЗБЕГАЙТЕ публично доступных вложенных типов. Единственным исключением является то, что переменные вложенного типа должны объявляться только в редких сценариях, таких как подкласс или другие сценарии расширенной настройки.
❌ НЕ используйте вложенные типы, если тип вероятно будет использоваться вне содержащего его типа.
Например, перечисление, переданное методу, определенному в классе, не должно быть определено как вложенный тип в классе.
❌ НЕ используйте вложенные типы, если их необходимо создать в клиентском коде. Если тип имеет открытый конструктор, он, вероятно, не должен быть вложенным.
Если тип может быть создан, это указывает на то, что тип имеет место во фреймворке самостоятельно (вы можете создать его, работать с ним и уничтожать его, не используя внешний тип), поэтому он не должен быть вложенным. Внутренние типы не должны широко использоваться вне внешнего типа без каких-либо отношений с внешним типом.
❌ НЕ определяйте вложенный тип как член интерфейса. Многие языки не поддерживают такую конструкцию.
© Часть 2005, 2009 Корпорация Майкрософт. Все права защищены.
Перепечатан с разрешения Pearson Education, Inc. из Руководство по проектированию: Соглашения, идиомы и шаблоны для повторного использования библиотек .NET, 2-е издание Кшиштоф Чвалина и Брэд Абрамс, опубликованное 22 октября 2008 года Addison-Wesley Профессиональный в рамках серии разработки Microsoft Windows.