extern (référence C#)
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();
Notes
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.
Notes
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(IntPtr h, string m, string c, int type);
static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return MessageBox((IntPtr)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));
}
}
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 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
Référence
System.Runtime.InteropServices.DllImportAttribute