extern (C#-Referenz)
Der extern-Modifizierer wird verwendet, um eine extern implementierte Methode zu deklarieren.Der extern-Modifizierer wird häufig mit dem DllImport-Attribut verwendet, wenn Sie nicht verwalteten Code mit Interop-Diensten aufrufen.In diesem Fall muss die Methode auch als static deklariert werden, wie im folgenden Beispiel gezeigt:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Hinweis |
---|
Das extern-Schlüsselwort kann ebenso einen externen Assemblyalias definieren. Dadurch wird es möglich, aus einer einzigen Assembly heraus auf unterschiedliche Versionen derselben Komponente zu verweisen.Weitere Informationen finden Sie unter extern-Alias (C#-Referenz). |
Der abstract (C#-Referenz)-Modifizierer und der extern-Modifizierer dürfen nicht gleichzeitig auf denselben Member angewendet werden.So bedeutet die Verwendung des extern-Modifizierers, dass die Methode außerhalb des C#-Codes implementiert wird, während bei Verwendung des abstract-Modifizierers die Methodenimplementierung nicht in der Klasse bereitgestellt wird.
Hinweis |
---|
Die Verwendung des extern-Schlüsselworts ist eingeschränkter als in C++.Einen Vergleich mit dem C++-Schlüsselwort finden Sie unter Verwenden von extern, um die Bindung angeben in der C++-Programmiersprachenreferenz. |
Beispiel
In diesem Beispiel empfängt das Programm eine Zeichenfolge vom Benutzer und zeigt sie in einem Meldungsfeld an.Das Programm verwendet die MessageBox-Methode, die aus der User32.dll-Bibliothek importiert wurde.
//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);
}
}
In diesem Beispiel wird eine DLL aus einem C-Programm erstellt, das aus dem C#-Programm im nächsten Beispiel aufgerufen wird.
// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
In diesem Beispiel wird extern unter Verwendung zweier Dateien, CM.cs und Cmdll.c, demonstriert.Bei der C-Datei handelt es sich um die in Beispiel 2 erstellte externe DLL, die aus dem C#-Programm aufgerufen wird.
// 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));
}
}
Hinweise
So erstellen Sie das Projekt:
Kompilieren Sie Cmdll.c in eine DLL, indem Sie folgende Visual C++-Befehlszeile verwenden:
cl /LD Cmdll.c
Kompilieren Sie CM.cs unter Verwendung der Befehlszeile:
csc CM.cs
Dadurch wird die ausführbare Datei CM.exe erstellt.Wenn Sie dieses Programm ausführen, übergibt SampleMethod den Wert 5 an die DLL-Datei, die den mit 10 multiplizierten Wert zurückgibt.
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.
Siehe auch
Referenz
System.Runtime.InteropServices.DllImportAttribute