Índice:
Definição - O que significa Internal?
Internal, em C #, é uma palavra-chave usada para declarar a acessibilidade de um tipo ou membro de tipo, de modo que o acesso seja limitado ao assembly no qual é declarado.
Um modificador interno é usado para impedir o uso de um modificador público, que permite o acesso a outros assemblies sempre que necessário. Um modificador interno, portanto, é útil na implementação do conceito de encapsulamento na programação orientada a objetos no nível do assembly. É usado em programas maiores, nos quais as informações ocultas através dos limites do programa podem melhorar a manutenção e a segurança.
Interno é mais frequentemente usado no desenvolvimento baseado em componentes, permitindo que um grupo específico de componentes se comunique de maneira privada e evite o acesso ao código que não é relevante para esse grupo. Modificadores internos permitem o acesso de membros de um assembly a partir de assemblies amigos projetados por motivos específicos, como teste de unidade, extensões para bibliotecas de classes etc.
Techopedia explica Internal
Internal é um dos modificadores de acesso que limita o acesso aos tipos definidos na montagem do projeto atual. A acessibilidade padrão de classes e estruturas que são declaradas em um espaço para nome ou no nível superior de uma unidade de compilação e não em outros tipos é interna.
Por exemplo, durante o desenvolvimento de um aplicativo de interface gráfica com o usuário (GUI) que envolve elementos personalizados da GUI, como janelas, formulários, controles etc., eles podem ser especificados com acessibilidade interna para cooperar em particular, sem serem expostos ao código que está usando esses elementos.
Fazer referência a um membro com acesso interno de fora do assembly no qual é declarado resulta em um erro do compilador. Ao usar os membros internos de um assembly que precisam ser acessados de um assembly amigo, o nome do assembly amigo deve ser especificado com o atributo InternalsVisibleToAttribute no assembly em que os membros internos estão definidos.
Um método virtual interno não pode ser substituído em C #.
Esta definição foi escrita no contexto de C #