Respostas:
internal é para escopo de assembly (ou seja, acessível apenas a partir do código no mesmo .exe ou .dll)
private é para o escopo da classe (ou seja, acessível apenas a partir do código da mesma classe).
Encontre uma explicação abaixo. Você pode verificar este link para obter mais detalhes - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Privado: - Membros privados são acessíveis apenas dentro do próprio tipo (classe própria).
Interno: - O membro interno é acessível somente dentro da montagem por herança (seu tipo derivado) ou por instância da classe.
Referência:
Protected Internal
fornece acesso mais amplo do que Protected
.
protected internal
como protected OR internal
.
With Type
significa isso ?
AND
essa matriz para true | false | false | false for protected internal
. não é intuitivo. em vez disso, é verdadeiro | verdadeiro | verdadeiro | falso como se OR'd
.
private protected
não sejam muito intuitivas. Para obter detalhes: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
internal
membros são visíveis para todo o código no assembly em que estão declarados.
(E para outros assemblies referenciados usando o [InternalsVisibleTo]
atributo )
private
Os membros são visíveis apenas para a classe declarante. (incluindo classes aninhadas)
Uma classe externa (não aninhada) não pode ser declarada private
, pois não há escopo de contenção para torná-la privada.
Para responder à pergunta que você esqueceu de fazer, os protected
membros são como private
membros, mas também são visíveis em todas as classes que herdam o tipo de declaração. (Mas apenas em uma expressão de pelo menos o tipo da classe atual)
private - encapsulamentos na classe / escopo / estrutura '.
encapsulamento interno em montagens.
Os membros privados são acessíveis apenas no corpo da classe ou na estrutura em que são declarados.
Tipos ou membros internos são acessíveis apenas em arquivos no mesmo assembly
Internal permitirá que você faça referência, digamos, a uma classe estática de Acesso a Dados (para segurança do encadeamento) entre várias classes de lógica de negócios, sem inscrevê-las para herdar essa classe / trip entre si em conjuntos de conexões e evitar a permissão de uma classe DAL promover o acesso ao nível público. Isso tem inúmeros apoios no design e nas melhores práticas.
O Entity Framework faz bom uso desse tipo de acesso
membros internos são acessíveis dentro da montagem (somente acessíveis no mesmo projeto)
membros privados são acessíveis na mesma classe
Existem 2 projetos em uma solução (Projeto1, Projeto2) e o Projeto1 tem uma referência ao Projeto2.