internal (C#-Referenz)internal (C# Reference)

Das Schlüsselwort internal ist ein Zugriffsmodifizierer für Typen und Typmember.The internal keyword is an access modifier for types and type members.

Auf dieser Seite deckt internal Zugriff.This page covers internal access. Die internal -Schlüsselwort ist auch Teil der protected internal Zugriffsmodifizierer.The internal keyword is also part of the protected internal access modifier.

Auf interne Typen oder Member kann nur innerhalb einer Datei in derselben Assembly zugegriffen werden, so wie in diesem Beispiel: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;  
}  

Einen Vergleich von internal mit den anderen Zugriffsmodifizierern finden Sie unter Zugriffsebenen und Zugriffsmodifizierer.For a comparison of internal with the other access modifiers, see Accessibility Levels and Access Modifiers.

Weitere Informationen zu Assemblys finden Sie unter Assemblys und der globale Assemblycache.For more information about assemblies, see Assemblies and the Global Assembly Cache.

Ein interner Zugriff wird häufig bei komponentenbasierten Entwicklungen verwendet, da auf diese Weise Gruppen von Komponenten privat kooperieren können, ohne dass sie für den Rest des Anwendungscodes verfügbar gemacht werden.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. Ein Framework könnte z.B für das Erstellen grafischer Benutzeroberflächen Control- und Form-Klassen zur Verfügung stellen, die kooperieren, indem sie Member mit internen Zugriff verwenden.For example, a framework for building graphical user interfaces could provide Control and Form classes that cooperate by using members with internal access. Da diese Member intern sind, werden sie nicht für Code verfügbar gemacht, der das Framework verwendet.Since these members are internal, they are not exposed to code that is using the framework.

Es ist unzulässig, auf einen Typen oder einen Member mit internem Zugriff außerhalb der Assembly zu verweisen, in der sie definiert wurden.It is an error to reference a type or a member with internal access outside the assembly within which it was defined.

BeispielExample

Dieses Beispiel enthält zwei Dateien, Assembly1.cs und Assembly1_a.cs.This example contains two files, Assembly1.cs and Assembly1_a.cs. Die erste Datei enthält eine interne Basisklasse, BaseClass.The first file contains an internal base class, BaseClass. In der zweiten Datei führt der Versuch, BaseClass zu instanziieren zu einem Fehler.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()   
   {  
      BaseClass myBase = new BaseClass();   // CS0122  
   }  
}  

BeispielExample

Verwenden Sie in diesem Beispiel dieselbe Datei, die Sie im ersten Beispiel verwendet haben, und ändern Sie die Zugriffsebene von BaseClass in public.In this example, use the same files you used in example 1, and change the accessibility level of BaseClass to public. Ändern Sie außerdem die Zugriffsebene des Members IntM in internal.Also change the accessibility level of the member IntM to internal. Jetzt können Sie die Klasse instanziieren, aber Sie können nicht auf den internen Member zugreifen.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:Assembly1.dll  
public class TestAccess   
{  
   static void Main()   
   {  
      BaseClass myBase = new BaseClass();   // Ok.  
      BaseClass.intM = 444;    // CS0117  
   }  
}  

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
ZugriffsmodifiziererAccess Modifiers
ZugriffsebenenAccessibility Levels
ModifiziererModifiers
publicpublic
privateprivate
protectedprotected