internal (Referenční dokumentace jazyka C#)

internalKlíčové slovo je modifikátor přístupu pro typy a členy typů.

Tato stránka se zabývá internal přístupem. internalKlíčové slovo je také součástí protected internal modifikátoru přístupu.

Interní typy nebo členy jsou přístupné pouze v rámci souborů ve stejném sestavení, jako v tomto příkladu:

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

Porovnání internal s dalšími modifikátory přístupu najdete v tématu úrovně přístupnosti a modifikátory přístupu.

Další informace o sestaveních naleznete v tématu sestavení v rozhraní .NET.

Běžné použití interního přístupu je v rámci vývoje založeného na komponentách, protože umožňuje skupině komponent, aby spolupracovaly soukromě, aniž by bylo zveřejněno pro zbytek kódu aplikace. Například architektura pro sestavování grafického uživatelského rozhraní může poskytovat Control a Form třídy, které spolupracují pomocí členů s interním přístupem. Vzhledem k tomu, že jsou tyto členy interní, nejsou vystaveny kódu, který používá rozhraní.

Jedná se o chybu, která odkazuje na typ nebo člen s vnitřním přístupem mimo sestavení, ve kterém byla definována.

Příklad 1

Tento příklad obsahuje dva soubory, Assembly1.cs a Assembly1_a.cs . První soubor obsahuje interní základní třídu BaseClass . Při pokusu o vytvoření instance v druhém souboru BaseClass dojde k chybě.

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

Příklad 2

V tomto příkladu použijte stejné soubory, které jste použili v příkladu 1, a změňte úroveň přístupnosti BaseClass na public . Změňte také úroveň přístupnosti člena intM na internal . V takovém případě můžete vytvořit instanci třídy, ale nemůžete získat přístup k internímu členu.

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

Specifikace jazyka C#

Další informace najdete v tématu deklarovaná přístupnost ve specifikaci jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také