Partager via


extern (Référence C#)

Mise à jour : novembre 2007

Le modificateur extern permet de déclarer une méthode qui est implémentée en externe. Le modificateur extern est souvent utilisé avec l'attribut DllImport lors de l'utilisation de services d'interopérabilité à appeler dans du code non managé. Dans ce cas, la méthode doit également être déclarée comme static, comme indiqué dans l'exemple suivant.

[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Remarque :

Le mot clé extern peut également définir un alias d'assembly externe, permettant ainsi de référencer des versions différentes du même composant à partir d'un seul assembly. Pour plus d'informations, consultez extern alias (Référence C#).

L'utilisation conjointe des modificateurs abstract (Référence C#) et extern pour modifier le même membre est une erreur. L'utilisation du modificateur extern signifie que la méthode est implémentée en dehors du code C#, tandis que l'utilisation du modificateur abstract signifie que l'implémentation de la méthode n'est pas effectuée dans la classe.

Remarque :

L'utilisation du mot clé extern est plus limitée qu'en C++. Pour effectuer la comparaison avec le mot clé C++, consultez Using extern to Specify Linkage dans Référence du langage C++.

Exemple

Dans cet exemple, le programme reçoit une chaîne provenant de l'utilisateur et l'affiche dans une boîte de message. Le programme utilise la méthode MessageBox importée de la bibliothèque User32.dll.

//using System.Runtime.InteropServices;
class ExternTest
{
    [DllImport("User32.dll", CharSet=CharSet.Unicode)] 
    public static extern int MessageBox(int h, string m, string c, int type);

    static int Main()
    {
        string myString;
        Console.Write("Enter your message: ");
        myString = Console.ReadLine();
        return MessageBox(0, myString, "My Message Box", 0);
    }

}

Cet exemple crée une DLL à partir d'un programme C qui est appelé depuis le programme C# dans l'exemple suivant.

// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
   return i*10;
}

Cet exemple utilise deux fichiers, CM.cs et Cmdll.c, pour illustrer le mot clé extern. Le fichier C est la DLL externe créée dans l'exemple 2, appelée depuis le programme C#.

// cm.cs
using System;
using System.Runtime.InteropServices;
public class MainClass 
{
   [DllImport("Cmdll.dll")]
   public static extern int SampleMethod(int x);

   static void Main() 
   {
      Console.WriteLine("SampleMethod() returns {0}.", SampleMethod(5));
   }
}

SampleMethod() returns 50.

Notes

Pour générer le projet :

  • Compilez Cmdll.c dans une DLL à l'aide de la ligne de commande Visual C++ :

    cl /LD Cmdll.c

  • Compilez CM.cs à l'aide de la ligne de commande :

    csc CM.cs

Cela crée le fichier exécutable CM.exe. Lorsque vous exécutez ce programme, SampleMethod passe la valeur 5 au fichier DLL, qui retourne la valeur multipliée par 10.

Spécification du langage C#

Pour plus d'informations, consultez la section suivante dans Spécifications du langage C#.

  • 10.6.7 Méthodes externes

Voir aussi

Concepts

Guide de programmation C#

Référence

Mots clés C#

Modificateurs (Référence C#)

System.Runtime.InteropServices.DllImportAttribute

Autres ressources

Référence C#