(referência C#) interno
The internal palavra-chave é um modificador de acesso para tipos e membros de tipo. Tipos internos ou membros são acessíveis somente nos arquivos no mesmo conjunto, como no exemplo:
public class BaseClass
{
// Only accessible within the same assembly
internal static int x = 0;
}
Para obter uma comparação de internal com os outros modificadores de acesso, consulte Níveis de acessibilidade (referência C#) e Modificadores de acesso (guia de programação C#).
Para obter mais informações sobre assemblies, consulte Conjuntos e (guia de programação C#) no cache do conjunto de módulos (assembly) global.
Um uso comum de acesso interno é no desenvolvimento baseado em componentes porque ela permite que um grupo de componentes para cooperar de uma forma particular sem expostas para o resto do código do aplicativo.Por exemplo, uma estrutura para a criaçã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.
Ele é um erro para fazer referência um tipo ou um membro com acesso interno fora o conjunto no qual ele foi definido.
Observação: |
---|
Uma internalvirtual método pode ser substituído em alguns idiomas, sistema autônomo textual Microsoft intermediate linguagem (MSIL) usando Ilasm.exe, mesmo que não podem ser substituído por meio de translation from VPE for Csharp. |
Exemplo
Este exemplo contém dois arquivos, Assembly1.cs e Assembly2.cs.O primeiro arquivo contém uma classe base interna, BaseClass.No arquivo segundo, uma tentativa de instanciar BaseClass gerará 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()
{
BaseClass myBase = new BaseClass(); // CS0122
}
}
Neste exemplo, usar os arquivos mesmos usada no exemplo 1 e altere o nível de acessibilidade de BaseClass para public. Alterar também o nível de acessibilidade do membro IntM para internal. Nesse caso, você pode instanciar a classe, mas você 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:Assembly1.dll
public class TestAccess
{
static void Main()
{
BaseClass myBase = new BaseClass(); // Ok.
BaseClass.intM = 444; // CS0117
}
}
Especificação da linguagem C#
Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:
3.5.1 Acessibilidade declarado
3.5.4 Acessibilidade restrições
10.3.5 Modificadores de acesso
10.3.8.2 Acessibilidade declarada
Consulte também
Conceitos
Referência
Modificadores de acesso (referência C#)
Níveis de acessibilidade (referência C#)