Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A internal palavra-chave é um modificador de acesso para tipos e membros do tipo.
Esta página trata do
internalacesso. Ainternalpalavra-chave também faz parte doprotected internalmodificador de acesso.
Tipos ou membros internos são acessíveis somente dentro de arquivos no mesmo assembly, como neste exemplo:
public class BaseClass
{
// Only accessible within the same assembly.
internal static int x = 0;
}
Para obter uma comparação com os outros modificadores de acesso, consulte Níveis de acessibilidade e modificadores de internal acesso.
Um assembly é um executável ou biblioteca de vínculo dinâmico (DLL) produzido a partir da compilação de um ou mais arquivos de origem.
Para obter mais informações sobre assemblies, consulte Assemblies in .NET.
Um uso comum do acesso interno é no desenvolvimento baseado em componentes porque permite que um grupo de componentes coopere de forma privada sem ser exposto ao resto do código do aplicativo. Por exemplo, uma estrutura para a construção de interfaces gráficas do usuário poderia fornecer Control e Form classes que cooperam usando membros com acesso interno. Como esses membros são internos, eles não são expostos ao código que está usando a estrutura.
É um erro fazer referência a um tipo ou membro com acesso interno fora do assembly dentro do qual foi definido.
Exemplo 1
Este exemplo contém dois arquivos Assembly1.cs e Assembly1_a.cs. O primeiro arquivo contém uma classe base interna, BaseClass. No segundo arquivo, uma tentativa de instanciação BaseClass produzirá um erro.
// Assembly1.cs
// Compile with: /target:library
internal class BaseClass
{
public static int intM = 0;
}
// Assembly1_a.cs
// Compile with: /reference:Assembly1.dll
class TestAccess
{
static void Main()
{
var myBase = new BaseClass(); // CS0122
}
}
Exemplo 2
Neste exemplo, use os mesmos arquivos usados no exemplo 1 e altere o nível de acessibilidade de BaseClass para public. Altere também o nível de acessibilidade do membro intM para internal. Nesse caso, você pode instanciar a classe, mas não pode acessar o membro interno.
// Assembly2.cs
// Compile with: /target:library
public class BaseClass
{
internal static int intM = 0;
}
// Assembly2_a.cs
// Compile with: /reference:Assembly2.dll
public class TestAccess
{
static void Main()
{
var myBase = new BaseClass(); // Ok.
BaseClass.intM = 444; // CS0117
}
}
Especificação da linguagem C#
Para obter mais informações, consulte Acessibilidade declarada na Especificação de linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso do C#.
Ver também
- Palavras-chave C#
- Modificadores de acesso
- Níveis de Acessibilidade
- Modificadores
- público
- privada
- protegido