Niveles de accesibilidad (Referencia de C#)Accessibility Levels (C# Reference)

Use los modificadores de acceso public, protected, internal o private para especificar uno de los siguientes niveles de accesibilidad declarada para miembros.Use the access modifiers, public, protected, internal, or private, to specify one of the following declared accessibility levels for members.

Accesibilidad declaradaDeclared accessibility SignificadoMeaning
public El acceso no está restringido.Access is not restricted.
protected El acceso está limitado a la clase contenedora o a los tipos derivados de la clase contenedora.Access is limited to the containing class or types derived from the containing class.
internal El acceso está limitado al ensamblado actual.Access is limited to the current assembly.
protected internal El acceso está limitado al ensamblado actual o a los tipos derivados de la clase contenedora.Access is limited to the current assembly or types derived from the containing class.
private El acceso está limitado al tipo contenedor.Access is limited to the containing type.
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.Access is limited to the containing class or types derived from the containing class within the current assembly. Disponible desde la versión C# 7.2.Available since C# 7.2.

Solo se permite un modificador de acceso para un miembro o tipo, excepto cuando se usan las combinaciones protected internal o private protected.Only one access modifier is allowed for a member or type, except when you use the protected internal or private protected combinations.

No se permiten modificadores de acceso en espacios de nombres.Access modifiers are not allowed on namespaces. Los espacios de nombres no tienen restricciones de acceso.Namespaces have no access restrictions.

En función del contexto en el que se produce una declaración de miembro, solo se permiten ciertas accesibilidades declaradas.Depending on the context in which a member declaration occurs, only certain declared accessibilities are permitted. Si no se especifica ningún modificador de acceso en una declaración de miembro, se usa una accesibilidad predeterminada.If no access modifier is specified in a member declaration, a default accessibility is used.

Los tipos de nivel superior, que no están anidados en otros tipos, solo pueden tener una accesibilidad internal o public.Top-level types, which are not nested in other types, can only have internal or public accessibility. La accesibilidad predeterminada para estos tipos es internal.The default accessibility for these types is internal.

Los tipos anidados, que son miembros de otros tipos, pueden tener accesibilidades declaradas como se indica en la tabla siguiente.Nested types, which are members of other types, can have declared accessibilities as indicated in the following table.

Miembros deMembers of Accesibilidad de miembro predeterminadaDefault member accessibility Accesibilidad declarada permitida del miembroAllowed declared accessibility of the member
enum public NingunaNone
class private public

protected

internal

private

protected internal

private protected
interface public NingunaNone
struct private public

internal

private

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.The accessibility of a nested type depends on its accessibility domain, which is determined by both the declared accessibility of the member and the accessibility domain of the immediately containing type. Sin embargo, el dominio de accesibilidad de un tipo anidado no puede superar al del tipo contenedor.However, the accessibility domain of a nested type cannot exceed that of the containing type.

Especificación del lenguaje C#C# Language Specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee Also