internal (Riferimenti per C#)internal (C# Reference)

La parola chiave internal è un modificatore di accesso per tipi e membri dei tipi.The internal keyword is an access modifier for types and type members.

Questa pagina illustra l'accesso internal.This page covers internal access. La parola chiave internal fa anche parte del modificatore di accesso protected internal.The internal keyword is also part of the protected internal access modifier.

I tipi o membri interni sono accessibili solo all'interno di file nello stesso assembly, come nell'esempio seguente:Internal types or members are accessible only within files in the same assembly, as in this example:

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

Per un confronto di internal con altri modificatori di accesso, vedere Livelli di accessibilità e Modificatori di accesso.For a comparison of internal with the other access modifiers, see Accessibility Levels and Access Modifiers.

Per altre informazioni sugli assembly, vedere Assembly in .NET.For more information about assemblies, see Assemblies in .NET.

Un uso comune dell'accesso interno è in fase di sviluppo basato su componenti poiché consente a un gruppo di componenti di collaborare in modo privato senza essere esposti al resto del codice dell'applicazione.A common use of internal access is in component-based development because it enables a group of components to cooperate in a private manner without being exposed to the rest of the application code. Ad esempio, un framework per la creazione di interfacce utente grafiche potrebbe indicare le classi Control e Form che interagiscono usando membri con accesso interno.For example, a framework for building graphical user interfaces could provide Control and Form classes that cooperate by using members with internal access. Poiché questi membri sono interni, non sono esposti al codice che usa il framework.Since these members are internal, they are not exposed to code that is using the framework.

Non è corretto fare riferimento a un tipo o a un membro con accesso interno all'esterno dell'assembly in cui è stato definito.It is an error to reference a type or a member with internal access outside the assembly within which it was defined.

EsempioExample

Questo esempio contiene due file, Assembly1.cs e Assembly1_a.cs.This example contains two files, Assembly1.cs and Assembly1_a.cs. Il primo file contiene una classe di base interna, BaseClass.The first file contains an internal base class, BaseClass. Nel secondo file, un tentativo di creare un'istanza di BaseClass genererà un errore.In the second file, an attempt to instantiate BaseClass will produce an error.

// 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  
   }  
}  

EsempioExample

In questo esempio, usare gli stessi file dell'esempio 1 e modificare il livello di accessibilità di BaseClass in public.In this example, use the same files you used in example 1, and change the accessibility level of BaseClass to public. Modificare anche il livello di accessibilità del membro intM in internal.Also change the accessibility level of the member intM to internal. In questo caso, è possibile creare un'istanza della classe, ma non è possibile accedere al membro interno.In this case, you can instantiate the class, but you cannot access the internal member.

// 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  
   }  
}  

Specifiche del linguaggio C#C# Language Specification

Per altre informazioni, vedere Accessibilità dichiarata in Specifica del linguaggio C#.For more information, see Declared accessibility in the C# Language Specification. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.The language specification is the definitive source for C# syntax and usage.

Vedere ancheSee also