internal (Référence C#)

 

System_CAPS_ICON_note.jpg Remarque

For the latest documentation on C#, visit the C# Guide on docs.microsoft.com.

Le mot clé d' internal est modificateur d'accès pour les types et membres de type. Les types ou membres internes ne sont accessibles que dans des fichiers figurant dans le même assembly, comme dans l'exemple suivant :

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

Il est possible d'accéder aux types ou aux membres qui ont accès au modificateur protected internal à partir de l'assembly actuel ou des types dérivés de la classe contenante.

Pour comparer le modificateur d'accès internal et les autres modificateurs d'accès, consultez Niveaux d'accessibilité et Modificateurs d'accès.

Pour plus d'informations sur les assemblys, consultez Assemblys et le Global Assembly Cache.

L'utilisation de l'accès interne est courante dans un développement basé sur des composants, car elle permet à un groupe de composants de coopérer de manière privée sans s'exposer au reste du code d'application. Par exemple, une infrastructure pour la génération d'interfaces utilisateur graphiques peut fournir des classes Control et Form qui coopèrent en utilisant des membres dotés d'un accès interne. Comme ces membres sont internes, ils ne sont pas exposés au code qui utilise l'infrastructure.

C'est une erreur que de référencer un type ou un membre avec accès interne en dehors de l'assembly dans lequel il a été défini.

Cet exemple met en jeu 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'instancier BaseClass produira 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()   
   {  
      BaseClass myBase = new BaseClass();   // CS0122  
   }  
}  

Dans cet exemple, utilisez les mêmes fichiers que dans l'exemple 1 et changez le niveau d'accessibilité de BaseClass en public. Modifiez également le niveau d'accessibilité de l'IntM membre 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:Assembly1.dll  
public class TestAccess   
{  
   static void Main()   
   {  
      BaseClass myBase = new BaseClass();   // Ok.  
      BaseClass.intM = 444;    // CS0117  
   }  
}  

Pour plus d'informations, voir 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.

Référence C#
Guide de programmation C#
Mots clés C#
Modificateurs d'accès
Niveaux d'accessibilité
Modificateurs
public
privées
protégés

Afficher: