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átoruprotected 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#.