Respuestas:
interno es para el alcance del ensamblaje (es decir, solo accesible desde el código en el mismo .exe o .dll)
private es para el alcance de la clase (es decir, accesible solo desde el código de la misma clase).
Encuentra una explicación a continuación. Puede consultar este enlace para obtener más detalles: http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Privado: los miembros privados solo son accesibles dentro del tipo propio (clase propia).
Interno: los miembros internos solo son accesibles dentro del ensamblaje por herencia (su tipo derivado) o por instancia de clase.
Referencia:
Protected Internal
proporciona un acceso más amplio que Protected
.
protected internal
como protected OR internal
.
With Type
significa
AND
esa matriz para verdadero | falso | falso | falso para protected internal
. No es intuitivo. en cambio es cierto | verdadero | verdadero | falso como si OR'd
.
private protected
no son muy intuitivas. Para más detalles: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
internal
los miembros son visibles para todo el código en el ensamblado en el que se declaran.
(Y para otros ensamblados a los que se hace referencia usando el [InternalsVisibleTo]
atributo )
private
los miembros solo son visibles para la clase declarante. (incluidas las clases anidadas)
No se puede declarar una clase externa (no anidada) private
, ya que no hay un ámbito de contención para que sea privada.
Para responder la pregunta que olvidó hacer, los protected
miembros son como private
miembros, pero también son visibles en todas las clases que heredan el tipo de declaración. (Pero solo en una expresión de al menos el tipo de la clase actual)
privado - encapsulaciones en clase / alcance / estructura ect '.
interno - encapsulación en ensambles.
Solo se puede acceder a los miembros privados dentro del cuerpo de la clase o la estructura en la que se declaran.
Solo se puede acceder a los tipos o miembros internos dentro de los archivos en el mismo ensamblado
Interno le permitirá hacer referencia, por ejemplo, a una clase estática de acceso a datos (para seguridad de subprocesos) entre múltiples clases de lógica de negocios, mientras no se suscribe para heredar esa clase / viaje entre sí en grupos de conexiones, y finalmente evitar permitir una clase DAL para promover el acceso a nivel público. Esto tiene innumerables respaldos en diseño y mejores prácticas.
Entity Framework hace buen uso de este tipo de acceso
los miembros internos son accesibles dentro de la asamblea (solo accesibles en el mismo proyecto)
los miembros privados son accesibles dentro de la misma clase
Hay 2 proyectos en una solución (Project1, Project2) y Project1 tiene una referencia a Project2.