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