internal (C# Reference)

O 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;
}

Tipos ou membros que têm o modificador de acesso protected internal podem ser acessados a partir de conjunto atual ou tipos que derivam da classe de recipiente.

Para obter uma comparação de internal com outros modificadores de acesso, consulte Accessibility Levels (C# Reference) e Access Modifiers (C# Programming Guide).

Para obter mais informações sobre assemblies, consulte Assemblies e o Cache de Assembly Global (C# e Visual Basic).

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 com o uso de 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çãoObservação

Um internal virtual método pode ser substituído em alguns idiomas, como, por exemplo, textual Microsoft intermediate language (MSIL) usando o Ilasm. exe, mesmo que não pode ser substituída usando o C#.

Exemplo

Este exemplo contém dois arquivos, Assembly1.cs e Assembly1_a.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, use os mesmos arquivos usada no exemplo 1 e alterar o nível de acessibilidade de BaseClass para public. Também alterar 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 C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

C# Keywords

Access Modifiers (C# Reference)

Accessibility Levels (C# Reference)

Modifiers (C# Reference)

public (C# Reference)

private (C# Reference)

protected (C# Reference)

Conceitos

C# Programming Guide

Outros recursos

C# Reference