c# - qué - que es una clase en programacion
Clase vs. clase pública (3)
El primero es equivalente a:
namespace Library{
internal class File{
//code inside it
}
}
Todas las visibilidades predeterminadas son las menos visibles posible: private
para miembros de class
es y struct
s (métodos, propiedades, campos, clases anidadas y enum
s anidadas) e internal
para miembros directos de namespace
s, porque no pueden ser privadas.
internal
significa que otro código en el mismo ensamble puede verlo, pero nada más (salvo ensamblajes amigos y el uso de la reflexión).
Esto tiene sentido por dos razones:
- Deberías hacer que las cosas utilicen la menor visibilidad posible de todos modos, para fortalecer tu encapsulación.
- Si incumplieron el pago
public
, podría accidentalmente hacer algo público que debería ser privado o interno. Si accidentalmente haces algo que no es lo suficientemente visible, obtienes un error de compilación obvio y lo arreglas. Si accidentalmente haces algo demasiado visible, introducirás un error en tu código que no se marcará como un error y que será un cambio de última hora para arreglarlo más tarde.
A menudo se considera mejor estilo para ser explícito con los modificadores de acceso, para ser más claro en el código, lo que está sucediendo.
Cuál es la diferencia entre:
namespace Library{
class File{
//code inside it
}
}
y:
namespace Library{
public class File{
//code inside it
}
}
Entonces, ¿cuál será la diferencia entre clase pública y clase ?
Por defecto, todas las class
(y todos los tipos para el caso) son internal
, por lo que para que sean accesibles desde el exterior (sin elementos como InternalsVisibleToAttribute
) tienes que hacerlas public
explícita.
Sin especificar public
la clase es implícitamente internal
. Esto significa que la clase solo es visible dentro del mismo ensamblaje. Cuando especifica public
, la clase es visible fuera del ensamblaje.
También se permite especificar el modificador internal
explícitamente:
internal class Foo {}