internal (odwołanie w C#)
Słowo internal
kluczowe jest modyfikatorem dostępu dla typów i składowych typów.
Ta strona obejmuje
internal
dostęp. Słowointernal
kluczowe jest również częściąprotected internal
modyfikatora dostępu.
Typy wewnętrzne lub składowe są dostępne tylko w plikach w tym samym zestawie, co w tym przykładzie:
public class BaseClass
{
// Only accessible within the same assembly.
internal static int x = 0;
}
Aby uzyskać porównanie internal
z innymi modyfikatorami dostępu, zobacz Poziomy ułatwień dostępu i modyfikatory dostępu.
Jest assembly
to plik wykonywalny lub dynamiczna biblioteka linków (DLL) utworzona na podstawie kompilowania co najmniej jednego pliku źródłowego.
Aby uzyskać więcej informacji na temat zestawów, zobacz Zestawy na platformie .NET.
Typowym zastosowaniem dostępu wewnętrznego jest programowanie oparte na składnikach, ponieważ umożliwia grupie składników współpracę w sposób prywatny bez uwidocznienia pozostałej części kodu aplikacji. Na przykład struktura służąca do tworzenia graficznych interfejsów użytkownika może udostępniać Control
klasy Form
, które współpracują przy użyciu elementów członkowskich z dostępem wewnętrznym. Ponieważ te elementy członkowskie są wewnętrzne, nie są narażone na kod korzystający z platformy.
Jest to błąd odwołania do typu lub elementu członkowskiego z dostępem wewnętrznym poza zestawem, w którym został zdefiniowany.
Przykład 1
Ten przykład zawiera dwa pliki i Assembly1.cs
Assembly1_a.cs
. Pierwszy plik zawiera wewnętrzną klasę bazową , BaseClass
. W drugim pliku próba utworzenia wystąpienia BaseClass
spowoduje wystąpienie błędu.
// 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
}
}
Przykład 2
W tym przykładzie użyj tych samych plików, których użyto w przykładzie 1, i zmień poziom ułatwień dostępu na BaseClass
public
. Zmień również poziom ułatwień dostępu elementu członkowskiego intM
na internal
. W takim przypadku można utworzyć wystąpienie klasy, ale nie można uzyskać dostępu do wewnętrznego elementu członkowskiego.
// 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
}
}
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Zadeklarowane ułatwienia dostępu w specyfikacji języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.