Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Un tipo anidado es un tipo que se define dentro de una clase, estructura o interfaz. Por ejemplo:
public class Container
{
class Nested
{
Nested() { }
}
}
Independientemente de si el tipo externo es una clase, interfaz o estructura, los tipos anidados predeterminados son privados. Solo se puede acceder a ellos desde su tipo contenedor. En el ejemplo anterior, los tipos externos no pueden tener acceso a la Nested clase .
También puede especificar un modificador de acceso para definir la accesibilidad de un tipo anidado, como se indica a continuación:
Los tipos anidados de una clase pueden ser públicos, protegidos, internos, protegidos internos, privados o privados protegidos.
Sin embargo, la definición de una
protectedclase anidada ,protected internaloprivate protecteddentro de una clase sellada genera la advertencia del compilador CS0628, "nuevo miembro protegido declarado en clase sellada".Tenga en cuenta también que hacer que un tipo anidado sea visible externamente infringe la regla de calidad de código CA1034 "Los tipos anidados no deben estar visibles".
Los tipos anidados de una estructura pueden ser públicos, internos o privados.
En el ejemplo siguiente se hace pública la clase Nested:
public 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 un argumento al constructor del 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 usa para crear una nueva instancia de la clase anidada, como se indica a continuación:
Container.Nested nest = new Container.Nested();