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

Обновлен: Ноябрь 2007

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

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

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

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#)