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łowo internal 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.csAssembly1_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 BaseClasspublic. 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#.

Zobacz też