Поделиться через


Вложенные типы (руководство по программированию на C#)

Тип, определенный в классе, структуре или интерфейсе , называется вложенным типом. Например.

public class Container
{
    class Nested
    {
        Nested() { }
    }
}

Независимо от того, является ли внешний тип классом, интерфейсом или структурой, вложенные типы по умолчанию закрыты; они доступны только из их содержащего типа. В предыдущем примере класс Nested недоступно для внешних типов.

Можно также указать модификатор доступа , чтобы определить специальные возможности вложенного типа, как показано ниже.

Следующий пример делает класс Nested общедоступным:

public class Container
{
    public class Nested
    {
        Nested() { }
    }
}

Вложенный или внутренний тип может получить доступ к содержащему или внешнему типу. Чтобы получить доступ к содержащему типу, передайте его как аргумент конструктору вложенного типа. Рассмотрим пример.

public class Container
{
    public class Nested
    {
        private Container? parent;

        public Nested()
        {
        }
        public Nested(Container parent)
        {
            this.parent = parent;
        }
    }
}

Вложенный тип имеет доступ ко всем элементам, доступным для его содержащего типа. Он может получить доступ к частным и защищенным членам содержащего типа, включая все унаследованные защищенные элементы.

В предыдущем объявлении полное имя класса NestedContainer.Nested. Это имя, используемое для создания нового экземпляра вложенного класса, как показано ниже.

Container.Nested nest = new Container.Nested();

См. также