Teilen über


extern (C#-Referenz)

Verwenden Sie den extern Modifizierer, um eine extern implementierte Methode zu deklarieren. Eine häufige Verwendung des extern Modifizierers ist mit dem DllImport Attribut, wenn Sie Interop-Dienste verwenden, um nicht verwalteten Code aufzurufen. In diesem Fall müssen Sie die Methode auch als static, wie im folgenden Beispiel gezeigt, deklarieren:

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

Sie können auch das extern Schlüsselwort verwenden, um einen externen Assemblyalias zu definieren. Mithilfe dieses Alias können Sie in einer einzigen Assembly auf unterschiedliche Versionen derselben Komponente verweisen. Weitere Informationen finden Sie unter extern-Alias.

Die C#-Sprachreferenz dokumentiert die zuletzt veröffentlichte Version der C#-Sprache. Außerdem enthält sie eine erste Dokumentation zu Funktionen in der öffentlichen Vorschau für die kommende Sprachversion.

In der Dokumentation werden alle Features identifiziert, die in den letzten drei Versionen der Sprache oder in der aktuellen öffentlichen Vorschau eingeführt wurden.

Tipp

Informationen dazu, wann ein Feature erstmals in C# eingeführt wurde, finden Sie im Artikel zum Versionsverlauf der C#-Sprache.

Es ist ein Fehler, die abstrakten und extern Modifizierer zusammen zu verwenden, um dasselbe Element zu ändern. Die Verwendung des extern Modifizierers bedeutet, dass die Methode außerhalb des C#-Codes implementiert wird, während die Verwendung des abstract Modifizierers bedeutet, dass die Methodenimplementierung nicht in der Klasse bereitgestellt wird.

Das extern Schlüsselwort hat in C# mehr Verwendungsmöglichkeiten 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).

  1. 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;
    }
    
  2. Öffnen Sie ein Visual Studio x64 (oder x86) Native Tools-Eingabeaufforderungsfenster aus dem Visual Studio-Installationsverzeichnis, und kompilieren Sie die cmdll.c Datei, indem Sie cl -LD cmdll.c an der Eingabeaufforderung eingeben.

  3. 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));
        }
    }
    
  4. Öffnen Sie ein Visual Studio x64 (oder x86) Native Tools-Eingabeaufforderungsfenster aus dem 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 x86-Eingabeaufforderung)

    Mit diesem Befehl wird die ausführbare Datei cm.exeerstellt.

  5. 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.
    

C#-Sprachspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch