Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 En utilisant extern pour spécifier la liaison 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