Compartir a través de


Tipos anidados (Guía de programación de C#)

Un tipo definido en una clase o struct se denomina tipo anidado. Por ejemplo:

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

Con independencia de si el tipo externo es una clase o struct, los tipos anidados se establecen de forma predeterminada en private, pero pueden definirse como public, protected internal, protected, internal o private. En el ejemplo anterior, Nested es inaccesible a los tipos externos, pero se puede establecer en public de la manera siguiente:

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

El tipo anidado o interno puede tener acceso al tipo contenedor o externo. Para tener acceso al tipo contenedor, páselo como constructor al tipo anidado. Por ejemplo:

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

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

Un tipo anidado tiene acceso a todos los miembros que estén accesibles para el tipo contenedor. Puede tener acceso a los miembros privados y protegidos del tipo contenedor, incluidos los miembros protegidos heredados.

En la declaración anterior, el nombre completo de la clase Nested es Container.Nested. Este es el nombre que se utiliza para crear una instancia nueva de la clase anidada, de la siguiente manera:

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

Vea también

Referencia

Clases y structs (Guía de programación de C#)

Modificadores de acceso (Guía de programación de C#)

Constructores (Guía de programación de C#)

Conceptos

Guía de programación de C#