Condividi tramite


internal (Riferimenti per C#)

La internal parola chiave è un modificatore di accesso per i tipi e i membri del tipo.

Il riferimento al linguaggio C# documenta la versione rilasciata più di recente del linguaggio C#. Contiene anche la documentazione iniziale per le funzionalità nelle versioni di anteprima pubblica per la prossima versione del linguaggio di programmazione.

La documentazione identifica tutte le funzionalità introdotte nelle ultime tre versioni della lingua o nelle anteprime pubbliche correnti.

Suggerimento

Per trovare quando una funzionalità è stata introdotta per la prima volta in C#, vedere l'articolo sulla cronologia delle versioni del linguaggio C#.

Annotazioni

Questo articolo illustra internal l'accesso. La internal parola chiave fa anche parte del protected internal modificatore di accesso.

È possibile accedere a tipi o membri interni solo all'interno di file nello stesso assembly, come illustrato nell'esempio seguente:

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

Per un confronto con gli altri modificatori di accesso, vedere internal di accessibilità e modificatori di accesso.

Un assembly è un eseguibile o una libreria di collegamento dinamico (DLL) prodotta dalla compilazione di uno o più file di origine.

Per altre informazioni sugli assembly, vedere Assembly in .NET.

Un uso comune dell'accesso interno è nello sviluppo basato su componenti perché consente a un gruppo di componenti di cooperare in modo privato senza essere esposto al resto del codice dell'applicazione. Ad esempio, un framework per la creazione di interfacce utente grafiche può fornire Control classi Form e che collaborano usando membri con accesso interno. Poiché questi membri sono interni, non vengono esposti al codice che usa il framework.

Si tratta di un errore per fare riferimento a un tipo o a un membro con accesso interno all'esterno dell'assembly in cui è stato definito.

Esempi

Questo esempio contiene due file e Assembly1.csAssembly1_a.cs. Il primo file contiene una classe base interna, BaseClass. Nel secondo file, un tentativo di creare BaseClass un'istanza genera un errore.

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

In questo esempio usare gli stessi file usati nel primo esempio, ma modificare il livello di accessibilità di BaseClass in public. Modificare anche il livello di accessibilità del membro intM in internal. In questo caso, è possibile creare un'istanza della classe , ma non è possibile accedere al 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
   }
}

Specifiche del linguaggio C#

Per altre informazioni, vedere Accessibilità dichiarata nella specifica del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.

Vedere anche