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

Vea también