Вложенные типы (Nested Types) — это типы объявленные внутри области видимости другого типа:
1 2 3 4 5 | public class TopLevel { public class Nested { } // Вложенный класс public enum Color { Red, Blue, Tan } // Вложенное перечисление } |
Вложенные типы имеют ряд особенностей:
- Вложенные типы имеют доступ к частным (
private
) членам родительского типа, а также ко всему, к чему имеет доступ сам родительский тип. - Вложенный тип можно объявлять с любым модификатором доступа, а не только
public
иinternal
. - По умолчанию вложенные типы имеют доступ
private
, а неinternal
. - Для доступа к вложенным типам из-вне родительского типа, необходимо указывать имя родительского типа (как для доступа к статичным членам).
1 | TopLevel.Color color = TopLevel.Color.Red; |