Compartir vía


Niveles de accesibilidad (referencia de C#)

Use los modificadores publicde acceso , protected, internalo private para especificar uno de los siguientes niveles de accesibilidad declarados para los miembros.

Accesibilidad declarada Significado
public El acceso no está restringido.
protected El acceso se limita a la clase contenedora o a los tipos derivados de ella.
internal El acceso está limitado al ensamblado actual.
protected internal El acceso está limitado al ensamblado actual o a tipos derivados de la clase contenedora.
private El acceso está limitado al tipo contenedor.
private protected El acceso se limita a la clase que contiene o a tipos derivados de la clase que contiene dentro del ensamblado actual.

Los tipos de nivel superior (no anidados) pueden usar el modificador de archivo . El file modificador restringe el acceso al código en el mismo archivo de código fuente. No se puede combinar el file modificador con ningún modificador de acceso.

Use solo un modificador de acceso para un miembro o tipo, excepto cuando use las protected internal combinaciones o private protected .

No use 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 produzca una declaración de miembro, solo se permiten determinadas accesibilidades declaradas. Si no especifica un 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 internal o public accesibilidad. La accesibilidad predeterminada para estos tipos es internal.

Los tipos anidados, que son miembros de otros tipos, pueden haber declarado accesibilidades como se indica en la tabla siguiente.

Miembros de Accesibilidad de miembro predeterminada Accesibilidad declarada permitida del miembro
enum public Ninguno
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 interface miembro con private accesibilidad debe tener una implementación predeterminada.

Nota:

Si modifica una clase o estructura con el modificador de palabra record clave, use los mismos modificadores de acceso. Además, con el record modificador , la accesibilidad de miembro predeterminada sigue siendo private para la clase y la estructura.

La accesibilidad de un tipo anidado depende de su dominio de accesibilidad, que determina la accesibilidad declarada del miembro y el dominio de accesibilidad del tipo que contiene inmediatamente. Sin embargo, el dominio de accesibilidad de un tipo anidado no puede superar el 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 el origen definitivo de la sintaxis y el uso de C#.

Consulte también