Compartilhar via


Tipos aninhados (Guia de Programação em C#)

Um tipo definido dentro de uma classe ou estrutura é chamado de tipo aninhado. Por exemplo:

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

Independentemente do tipo externo ser uma classe ou estrutura, o padrão dos tipos aninhados é particular, mas pode ser tornado público, protegido interno, protegido, interno, ou particular. No exemplo anterior, Nested é inacessível para tipos externos, mas pode ser tornado público como este:

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

O tipo aninhado ou interno pode acessar o tipo externo ou recipiente. Para acessar o tipo recipiente, passe-o como um construtor para o tipo aninhado. Por exemplo:

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

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

Um tipo aninhado tem acesso a todos os membros que são acessíveis ao seu tipo recipiente. Pode acessar membros particulares e protegidos do tipo recipiente, incluindo todos os membros protegidos herdados.

Na declaração anterior, o nome completo da classe Nested é Container.Nested. Este é o nome usado para criar uma nova instância da classe aninhada, como a seguir:

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

Consulte também

Referência

Classes e structs (Guia de Programação em C#)

Modificadores de acesso (Guia de Programação em C#)

Construtores (Guia de Programação em C#)

Conceitos

Guia de Programação em C#