internal (Referenční dokumentace jazyka C#)

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

Tato stránka popisuje internal přístup. Klíčové internal slovo je také součástí modifikátoru protected internal 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 ostatními modifikátory přístupu najdete v tématu Úrovně přístupnosti a Modifikátory přístupu.

Je assembly spustitelná nebo dynamická knihovna odkazů (DLL) vytvořená z kompilace jednoho nebo více zdrojových souborů.

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

Běžné použití interního přístupu je ve vývoji založeném na komponentách, protože umožňuje skupině komponent spolupracovat soukromě, aniž by byla vystavena zbytku kódu aplikace. Například architektura pro vytváření grafických uživatelských rozhraní může poskytovat Control a Form třídy, které spolupracují pomocí členů s interním přístupem. Vzhledem k tomu, že jsou tito členové interní, nejsou vystaveni kódu, který používá architekturu.

Jedná se o chybu odkazování na typ nebo člen s interním přístupem mimo sestavení, ve kterém bylo definováno.

Příklad 1

Tento příklad obsahuje dva soubory Assembly1.cs a Assembly1_a.cs. První soubor obsahuje interní základní třídu , BaseClass. Ve druhém souboru se při pokusu o vytvoření instance BaseClass vytvoří chyba.

// 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ň BaseClass přístupnosti na public. Změňte také úroveň přístupnosti člena intM na internal. V tomto 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 naleznete 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é