En C#, los modificadores de acceso se utilizan para controlar la visibilidad y accesibilidad de clases y sus miembros (campos, métodos, propiedades, etc.).
1. public: El miembro es accesible desde cualquier parte del código, tanto dentro de la misma clase como desde otras clases que estén en el mismo ensamblado o en ensamblados diferentes.
public class MiClase
{
public int MiVariable;
public void MiMetodo() { }
}
2. private: El miembro es accesible solo dentro de la clase en la que se define. No es accesible desde clases externas ni desde otras partes del código.
public class MiClase
{
private int MiVariable;
private void MiMetodo() { }
}
3. protected: El miembro es accesible dentro de la clase que lo define y en las clases derivadas (subclases). No es accesible desde clases externas a menos que sea una subclase.
Q
public class MiClase
{
protected int MiVariable;
protected void MiMetodo() { }
}
public class MiClaseDerivada : MiClase
{
public void OtroMetodo()
{
MiVariable = 10; // Acceso permitido porque MiClaseDerivada es una subclase de MiClase
MiMetodo(); // Acceso permitido por la misma razón
}
}
4. internal: El miembro es accesible solo dentro del mismo ensamblado (assembly). Es decir, otras clases que estén en el mismo proyecto pueden acceder a este miembro, pero no clases externas.
internal class MiClase
{
internal int MiVariable;
internal void MiMetodo() { }
}
5. protected internal: Este modificador combina las características de `protected` e `internal`. El miembro es accesible en las clases derivadas (subclases) dentro del mismo ensamblado.
public class MiClase
{
protected internal int MiVariable;
protected internal void MiMetodo() { }
}
public class MiClaseDerivada : MiClase
{
public void OtroMetodo()
{
MiVariable = 10; // Acceso permitido porque MiClaseDerivada es una subclase de MiClase
MiMetodo(); // Acceso permitido por la misma razón
}
}
6. private protected: Introducido en C# 7.2, este modificador es similar a `protected`, pero restringe aún más el acceso a las clases derivadas (subclases) solo dentro del mismo ensamblado.
public class MiClase
{
private protected int MiVariable;
private protected void MiMetodo() { }
}
public class MiClaseDerivada : MiClase
{
public void OtroMetodo()
{
MiVariable = 10; // Acceso permitido porque MiClaseDerivada es una subclase de MiClase
MiMetodo(); // Acceso permitido por la misma razón
}
}
Comentarios
Publicar un comentario