internal (odwołanie w C#)

Słowo internal kluczowe jest modyfikatorem dostępu dla typów i elementów członkowskich 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 elementy członkowskie 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.

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 zapewniać 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ą one narażone na kod korzystający z platformy.

Jest to błąd podczas odwołowania się 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 Assembly1.cs i 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óre 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ż