Tipos aninhados (guia de programação de C#)
Um tipo definido dentro de um classe ou struct é chamado de um tipo aninhado. Por exemplo:
class Container
{
class Nested
{
Nested() { }
}
}
Independentemente, por exemplo, se os tipos externos é uma classe ou estrutura, tipos aninhados padrão particular, mas pode ser efetuada públicaprotegido, interno, protegido, interno, ou particular. No exemplo anterior, Nested é inacessível para os tipos externos, mas pode se tornar pública, como este:
class Container
{
public class Nested
{
Nested() { }
}
}
O tipo aninhado ou interno pode acessar o tipo de recipiente ou externo. Para acessar o tipo de recipiente, passá-lo 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;
}
}
}
Tipos aninhados podem acessar membros de particulares e protegidos do tipo recipiente, incluindo quaisquer membros herdados de particulares ou protegidos.
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, da seguinte maneira:
Container.Nested nest = new Container.Nested();
Consulte também
Referência
Classes e estruturas (guia de programação de C#)
Access Modifiers (C# Programming Guide)
Constructors (C# Programming Guide)