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á
internalpřístupem.internalKlíčové slovo je také součástíprotected internalmodifiká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#.