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


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

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

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

Независимо от того, являются ли внешние типы классом или структурой, вложенные типы по умолчанию являются private, но могут быть также public, protected internal, protected, internal или private. В предыдущем примере тип 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;
        }
    }
}

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

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

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

См. также

Ссылки

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

Модификаторы доступа (Руководство по программированию в C#)

Конструкторы (Руководство по программированию на C#)

Основные понятия

Руководство по программированию на C#