1
resposta

[Dúvida] Visibilidade internal

Qual é o objetivo da utilização do nível de visibilidade "internal" em C#, e como ele pode ser aplicado para encapsular uma classe e restringir seu acesso somente ao contexto da biblioteca?

1 resposta

Bruno,

Sim, neste caso somente dentro da DLL.

Internal: é o padrão no C#. Caso nenhum modificador seja declarado, definirá a acessibilidade do elemento dentro do executável ou dll onde foi declarado.

É bem interessante você conhecer bem todos os "Modificadores de Acesso". Por favor, leia mais em:

===============================================================

Modificadores de acesso (Guia de Programação em C#)

Artigo - 06/04/2023

Todos os tipos e membros de tipo têm um nível de acessibilidade. O nível de acessibilidade controla se eles podem ser usados em outro código no assembly ou em outros assemblies. Um assembly é um .dll ou .exe criado ao selecionar um ou mais arquivos .cs em uma única compilação. Use os modificadores de acesso a seguir para especificar a acessibilidade de um tipo ou membro quando você o declarar:

  • public: o tipo ou membro pode ser acessado por qualquer outro código no mesmo assembly ou em outro assembly que faz referência a ele. O nível de acessibilidade de membros públicos de um tipo é controlado pelo nível de acessibilidade do próprio tipo.
  • private: o tipo ou membro pode ser acessado somente pelo código na mesma class ou struct.
  • protected: o tipo ou membro pode ser acessado somente pelo código na mesma class ou em uma class derivada dessa class.
  • internal: o tipo ou membro pode ser acessado por qualquer código no mesmo assembly, mas não de outro assembly. Em outras palavras, tipos ou membros internal podem ser acessados no código que faz parte da mesma compilação.
  • protected internal: o tipo ou membro pode ser acessado por qualquer código no assembly no qual ele é declarado ou de uma class derivada em outro assembly.
  • private protected: o tipo ou membro pode ser acessado por tipos derivados do class, que são declarados no assembly relativo.

Tabela de resumo

Local do chamadorpublicprotected internalprotectedinternalprivate protectedprivate
Dentro da classe✔️✔️✔️✔️✔️✔️
Classe derivada (mesmo assembly)✔️✔️✔️✔️✔️
Classe não derivada (mesmo assembly)✔️✔️✔️
Classe derivada (assembly diferente)✔️✔️✔️
Classe não derivada (assembly diferente)✔️

https://learn.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers

===============================================================

Por favor, NÃO esqueça de fechar o tópico e se eu te ajudei marque minha resposta como correta... eu adoro esses pontinhos! Como diz o Mutley: "- Medalha-Medalha-Medalha."

[]'s,

Fabio I.