Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
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();
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.
Es ist ein Fehler, den abstract-Modifizierer und den extern
-Modifizierer gleichzeitig auf demselben Member anzuwenden. 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.
Die Verwendung des extern-Schlüsselworts ist in C# eingeschränkter als in C++. Informationen zum Vergleichen des C#-Schlüsselworts finden Sie unter Verwenden von „extern“ zur Angabe der Verknüpfung in der C++-Sprachreferenz.
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 von 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);
}
}
Dieses Beispiel veranschaulicht ein C#-Programm, das eine C-Bibliothek aufruft (eine native DLL).
Erstellen Sie die folgende C-Datei mit dem Namen cmdll.c
:
// cmdll.c
// Compile with: -LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
Öffnen Sie ein Visual Studio x64 (oder x32) Native Tools-Eingabeaufforderungsfenster im Visual Studio-Installationsverzeichnis, und kompilieren Sie die cmdll.c
-Datei, indem Sie in der Eingabeaufforderung cl -LD cmdll.c eingeben.
Erstellen Sie im gleichen Verzeichnis die folgende C#-Datei mit dem Namen cm.cs
:
// 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));
}
}
Öffnen Sie ein Visual Studio x64 (oder x32) Native Tools-Eingabeaufforderungsfenster im Visual Studio-Installationsverzeichnis, und kompilieren Sie die cm.cs
-Datei, indem Sie Folgendes eingeben:
csc cm.cs (für die x64-Eingabeaufforderung) oder csc -platform:x86 cm.cs (für die x32-Eingabeaufforderung)
Dadurch wird die ausführbare Datei cm.exe
erstellt.
Führen Sie cm.exe
aus. Die SampleMethod
-Methode übergibt den Wert 5 an die DLL-Datei, die den mit 10 multiplizierten Wert zurückgibt. Das Programm erzeugt die folgende Ausgabe:
SampleMethod() returns 50.
Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren