Niveles de accesibilidad (Referencia de C#)
Use los modificadores de acceso public
, protected
, internal
o private
para especificar uno de los siguientes niveles de accesibilidad declarada para miembros.
Accesibilidad declarada | Significado |
---|---|
public |
El acceso no está restringido. |
protected |
El acceso está limitado a la clase contenedora o a los tipos derivados de la clase contenedora. |
internal |
El acceso está limitado al ensamblado actual. |
protected internal |
El acceso está limitado al ensamblado actual o a los tipos derivados de la clase contenedora. |
private |
El acceso está limitado al tipo contenedor. |
private protected |
El acceso está limitado a la clase contenedora o a los tipos derivados de la clase contenedora que hay en el ensamblado actual. |
Solo se permite un modificador de acceso para un miembro o tipo, excepto cuando se usan las combinaciones protected internal
o private protected
.
No se permiten modificadores de acceso en espacios de nombres. Los espacios de nombres no tienen restricciones de acceso.
En función del contexto en el que se produce una declaración de miembro, solo se permiten ciertas accesibilidades declaradas. Si no se especifica ningún modificador de acceso en una declaración de miembro, se usa una accesibilidad predeterminada.
Los tipos de nivel superior, que no están anidados en otros tipos, solo pueden tener una accesibilidad internal
o public
. La accesibilidad predeterminada para estos tipos es internal
.
Los tipos anidados, que son miembros de otros tipos, pueden tener accesibilidades declaradas como se indica en la tabla siguiente.
Miembros de | Accesibilidad de miembro predeterminada | Accesibilidad declarada permitida del miembro |
---|---|---|
enum |
public |
Ninguna |
class |
private |
public protected internal private protected internal private protected |
interface |
public |
public protected internal private *protected internal private protected |
struct |
private |
public internal private |
* Un miembro interface
con accesibilidad private
debe tener una implementación predeterminada.
Nota
Si se modifica una clase o estructura con el modificador de palabra clave record
, se permiten los mismos modificadores de acceso.
Además, con el modificador record
, la accesibilidad del miembro predeterminado sigue siendo private
para la clase y la estructura.
La accesibilidad de un tipo anidado depende de su dominio de accesibilidad, que viene determinado por la accesibilidad declarada del miembro y el dominio de accesibilidad del tipo contenedor inmediato. Sin embargo, el dominio de accesibilidad de un tipo anidado no puede superar al del tipo contenedor.
Especificación del lenguaje C#
Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.