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.
A referência da linguagem C# documenta a versão mais recentemente lançada da linguagem C#. Contém também documentação inicial para funcionalidades em versões preliminares públicas para a próxima versão da linguagem.
A documentação identifica qualquer funcionalidade introduzida pela primeira vez nas últimas três versões da língua ou em pré-visualizações públicas atuais.
Sugestão
Para saber quando uma funcionalidade foi introduzida pela primeira vez em C#, consulte o artigo sobre o histórico de versões da linguagem C#.
Observação
Este artigo aborda internal o acesso. A internal palavra-chave também faz parte do protected internal modificador de acesso.
Pode aceder a tipos internos ou membros apenas dentro de ficheiros na mesma assembleia, como mostrado no seguinte 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 internal e modificadores de 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 estes membros são internos, não estão expostos a código que utilize o framework.
É um erro referenciar um tipo ou membro com acesso interno fora do assembly onde o definiste.
Examples
Este exemplo contém dois arquivos Assembly1.cs e Assembly1_a.cs. O primeiro arquivo contém uma classe base interna, BaseClass. No segundo ficheiro, uma tentativa de instanciar BaseClass produz 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
}
}
Neste exemplo, use os mesmos ficheiros que usou no primeiro exemplo, mas altere o nível de acessibilidade de BaseClass para public. Altere também o nível de acessibilidade do membro intM para internal. Neste caso, podes instanciar a classe, mas não podes aceder ao 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