internal (odwołanie w C#)internal (C# Reference)

Słowo kluczowe internal jest modyfikatorem dostępu dla typów i elementów członkowskich typu.The internal keyword is an access modifier for types and type members.

Ta strona obejmuje internal dostępu.This page covers internal access. Słowo kluczowe internal jest również częścią modyfikatora dostępu protected internal .The internal keyword is also part of the protected internal access modifier.

Typy wewnętrzne lub składowe są dostępne tylko w plikach w tym samym zestawie, jak w poniższym przykładzie:Internal types or members are accessible only within files in the same assembly, as in this example:

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ęp.For a comparison of internal with the other access modifiers, see Accessibility Levels and Access Modifiers.

Aby uzyskać więcej informacji o zestawach, zobacz zestawy w programie .NET.For more information about assemblies, see Assemblies in .NET.

Typowym zastosowaniem dostępu wewnętrznego jest w programowaniu opartym na składnikach, ponieważ umożliwia ono grupom współdziałanie w sposób prywatny bez ujawniania pozostałej części kodu aplikacji.A common use of internal access is in component-based development because it enables a group of components to cooperate in a private manner without being exposed to the rest of the application code. Na przykład struktura do tworzenia graficznych interfejsów użytkownika może zapewnić Control i Form klas, które współpracują z użytkownikami z dostępem wewnętrznym.For example, a framework for building graphical user interfaces could provide Control and Form classes that cooperate by using members with internal access. Ponieważ te składowe są wewnętrzne, nie są one widoczne dla kodu, który używa struktury.Since these members are internal, they are not exposed to code that is using the framework.

Wystąpił błąd podczas odwoływania się do typu lub elementu członkowskiego z dostępem wewnętrznym poza zestawem, w ramach którego został zdefiniowany.It is an error to reference a type or a member with internal access outside the assembly within which it was defined.

PrzykładExample

Ten przykład zawiera dwa pliki, Assembly1.cs i Assembly1_a.cs.This example contains two files, Assembly1.cs and Assembly1_a.cs. Pierwszy plik zawiera wewnętrzną klasę bazową BaseClass.The first file contains an internal base class, BaseClass. W drugim pliku próba wystąpienia BaseClass spowoduje wystąpienie błędu.In the second file, an attempt to instantiate BaseClass will produce an error.

// 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ładExample

W tym przykładzie należy użyć tych samych plików, które zostały użyte w przykładzie 1, i zmienić poziom dostępności BaseClass na public.In this example, use the same files you used in example 1, and change the accessibility level of BaseClass to public. Zmień również poziom dostępności intM Członkowskich, aby internal.Also change the accessibility level of the member intM to internal. W takim przypadku można utworzyć wystąpienie klasy, ale nie można uzyskać dostępu do wewnętrznego elementu członkowskiego.In this case, you can instantiate the class, but you cannot access the internal member.

// 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#C# Language Specification

Aby uzyskać więcej informacji, zobacz zadeklarowane ułatwienia dostępu w C# specyfikacji języka.For more information, see Declared accessibility in the C# Language Specification. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.The language specification is the definitive source for C# syntax and usage.

Zobacz takżeSee also