Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das internal Schlüsselwort ist ein Zugriffsmodifizierer für Typen und Typmmber.
Auf dieser Seite wird der Zugriff auf
internalbehandelt. DasinternalSchlüsselwort ist auch Teil desprotected internalZugriffsmodifizierers.
Auf interne Typen oder Member kann nur innerhalb von Dateien in derselben Assembly zugegriffen werden, wie in diesem Beispiel:
public class BaseClass
{
// Only accessible within the same assembly.
internal static int x = 0;
}
Einen Vergleich mit internal den anderen Zugriffsmodifizierern finden Sie unter Barrierefreiheitsstufen und Zugriffsmodifizierer.
Eine assembly Datei ist eine ausführbare oder dll (Dynamic Link Library), die aus der Kompilierung einer oder mehrerer Quelldateien erstellt wird.
Weitere Informationen zu Assemblys finden Sie unter Assemblys in .NET.
Eine häufige Verwendung des internen Zugriffs erfolgt in der komponentenbasierten Entwicklung, da eine Gruppe von Komponenten auf private Weise zusammenarbeiten kann, ohne den Rest des Anwendungscodes verfügbar zu machen. Beispielsweise könnte ein Framework zum Erstellen grafischer Benutzeroberflächen mithilfe von Membern mit internem Zugriff bereitgestellt und Form Klassen bereitgestellt Control werden. Da diese Member intern sind, werden sie nicht für Code verfügbar gemacht, der das Framework verwendet.
Fehler beim Verweisen auf einen Typ oder ein Mitglied mit internem Zugriff außerhalb der Assembly, in der er definiert wurde.
Beispiel 1
Dieses Beispiel enthält zwei Dateien Assembly1.cs und Assembly1_a.cs. Die erste Datei enthält eine interne Basisklasse, BaseClass. In der zweiten Datei erzeugt ein Versuch, eine Instanziierung zu instanziieren BaseClass , einen Fehler.
// 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
}
}
Beispiel 2
Verwenden Sie in diesem Beispiel die gleichen Dateien, die Sie in Beispiel 1 verwendet haben, und ändern Sie die Barrierefreiheitsstufe in BaseClasspublic. Ändern Sie auch die Barrierefreiheitsstufe des Elements intM in internal. In diesem Fall können Sie die Klasse instanziieren, aber Sie können nicht auf das interne Mitglied zugreifen.
// 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
}
}
C#-Sprachspezifikation
Weitere Informationen finden Sie unter "Deklarierte Barrierefreiheit in der C#-Sprachspezifikation". Die Sprachspezifikation ist die endgültige Quelle für C#-Syntax und -Verwendung.