proteccion niveles metodo functions acceso abstracto c# .net access-modifiers

niveles - protected internal c#



Clases protegidas en.NET (4)

No se pudo definir una clase protegida dentro de un espacio de nombres. Solo se pudo declarar como una clase anidada. Se podría crear una instancia dentro de otras clases anidadas y podría ser heredado por otras clases anidadas y puede heredar de otras clases anidadas.

Se podría acceder a un miembro protegido de una clase principal por las clases anidadas, así como por las clases que heredan de la clase principal (clase derivada o clase secundaria).

¿Puede una clase estar protegida en .NET?
¿Por qué es / no es esto posible?


Sí, simplemente no podemos convertirlos en clases de nivel superior, deben ser clases internas


Sí, simplemente no puedes convertirlas en clases de nivel superior, deben ser clases internas

public class Outer { protected class Foo { } }

Esto está bien, significa que las únicas clases permitidas para ver Foo son subclases de Outer

class X { // ''Outer.Foo'' is inaccessible due to its protection level private void Flibble(Outer.Foo foo) { } } class X : Outer { // fine private void Flibble(Outer.Foo foo) { } }

Tenga en cuenta que no puede declarar ninguna clase externa como privada, protegida (o protegida interna) en c #, ya que el modificador de acceso para las clases de nivel externo define su visibilidad en relación con otros ensamblados. Específicamente visible solo en el ensamblaje (o para amigos a través de InternalsVisibleTo) o fuera del ensamblaje.

Por lo tanto, mientras que los identificadores público / interno se usan aquí para la coherencia, realmente el estado en IL es simplemente ''Público'' o ''No Público'' (como lo muestran los indicadores de Reflection.Emit )


protected visibilidad protected se usa para indicar "visible para las clases derivadas". Esto tiene sentido en las cosas dentro de una clase, pero normalmente no tiene ningún significado en el nivel de clase.

La única excepción a esto es una clase interna, donde la visibilidad protegida significa que las clases derivadas tendrán acceso a la clase interna.