Partager via


interne (référence C#)

Le internal mot clé est un modificateur d’accès pour les types et les membres de type.

Cette page couvre l'accès à internal. Le internal mot clé fait également partie du modificateur d’accès protected internal .

Les types internes ou les membres sont accessibles uniquement dans les fichiers du même assembly, comme dans cet exemple :

public class BaseClass
{  
    // Only accessible within the same assembly.
    internal static int x = 0;
}  

Pour une comparaison des internal autres modificateurs d’accès, consultez Les niveaux d’accessibilité et les modificateurs d’accès.

Il assembly s’agit d’une bibliothèque de liens dynamiques ou exécutable produite à partir de la compilation d’un ou de plusieurs fichiers sources.

Pour plus d’informations sur les assemblys, consultez Assemblys dans .NET.

Un usage courant de l’accès interne est en développement basé sur les composants, car il permet à un groupe de composants de coopérer de manière privée sans être exposé au reste du code d’application. Par exemple, une infrastructure permettant de créer des interfaces utilisateur graphiques peut fournir et Form des Control classes qui collaborent à l’aide de membres disposant d’un accès interne. Étant donné que ces membres sont internes, ils ne sont pas exposés au code qui utilise l’infrastructure.

Il s’agit d’une erreur pour référencer un type ou un membre disposant d’un accès interne en dehors de l’assembly dans lequel il a été défini.

Exemple 1

Cet exemple contient deux fichiers, Assembly1.cs et Assembly1_a.cs. Le premier fichier contient une classe de base interne. BaseClass Dans le deuxième fichier, une tentative d’instanciation BaseClass génère une erreur.

// 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  
   }  
}  

Exemple 2

Dans cet exemple, utilisez les mêmes fichiers que ceux que vous avez utilisés dans l’exemple 1 et modifiez le niveau d’accessibilité de BaseClass la valeur public. Modifiez également le niveau d’accessibilité du membre intM en internal. Dans ce cas, vous pouvez instancier la classe, mais vous ne pouvez pas accéder au membre interne.

// 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  
   }  
}  

Spécification du langage C#

Pour plus d’informations, consultez Accessibilité déclarée dans la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi