Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo
Importante Este documento pode não descrever as práticas recomendadas para o desenvolvimento atual, links para downloads e outros recursos podem não ser mais válidos. A versão atual recomendada pode ser encontrada aqui.

(referência C#) interno

The palavra-chave internal is an Modificador de acesso for Tipos and Membros tipo. Tipos internos e membros são acessíveis somente dentro dos arquivos no mesmo assembly, como neste exemplo:

public class BaseClass 
{
    // Only accessible within the same assembly
    internal static int x = 0;
}

For a comparison of internal with the Outro modifiers acessar, see Levels Accessibility and Modificadores de acesso (guia de programação C#).

Para obter mais informações sobre conjuntos de módulos (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 criar interfaces gráficas do usuário poderia fornecer controle e classes formulário que cooperar 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çãoObservação:

An internalvirtual method can be overridden in some languages, such as textual Microsoft intermediate language (MSIL) using Ilasm.exe, even though it cannot be overridden using C#.

Este exemplo contém dois arquivos, Assembly1.cs e Assembly2.cs.O primeiro arquivo contém um classe base interno, BaseClass.No segundo arquivo, uma tentativa criar instância BaseClass irá 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
   }
}

In this exemplo, use the same Arquivos you Used in exemplo 1, and Alterar the acessibilidade nível of BaseClass to public.Alterar also the acessibilidade nível of the membro IntM to 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
   }
}

Para mais informações, consulte as seguintes seções em Especificação da Linguagem C#:

  • 3.5.1 Acessibilidade declarado

  • 3.5.4 Restrições de acessibilidade

  • 10.2.3 Modificadores de acesso

  • 10.2.6.2 Acessibilidade declarado

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft