extern (C#-Referenz)extern (C# Reference)

Der extern-Modifizierer wird verwendet, um eine extern implementierte Methode zu deklarieren.The extern modifier is used to declare a method that is implemented externally. Der extern-Modifizierer wird häufig mit dem DllImport-Attribut verwendet, wenn Sie nicht verwalteten Code mit Interop-Diensten aufrufen.A common use of the extern modifier is with the DllImport attribute when you are using Interop services to call into unmanaged code. In diesem Fall muss die Methode auch als static deklariert werden, wie im folgenden Beispiel gezeigt:In this case, the method must also be declared as static, as shown in the following example:

[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.The extern keyword can also define an external assembly alias, which makes it possible to reference different versions of the same component from within a single assembly. Weitere Informationen finden Sie unter extern-Alias.For more information, see extern alias.

Es ist ein Fehler, den abstract-Modifizierer und den extern-Modifizierer gleichzeitig auf demselben Member anzuwenden.It is an error to use the abstract and extern modifiers together to modify the same member. 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.Using the extern modifier means that the method is implemented outside the C# code, whereas using the abstract modifier means that the method implementation is not provided in the class.

Die Verwendung des extern-Schlüsselworts ist in C# eingeschränkter als in C++.The extern keyword has more limited uses in C# than in C++. Informationen zum Vergleichen des C#-Schlüsselworts mit dem C++-Schlüsselwort finden Sie unter "Using extern to Specify Linkage" in der C++-Sprachreferenz.To compare the C# keyword with the C++ keyword, see Using extern to Specify Linkage in the C++ Language Reference.

BeispielExample

Beispiel 1.Example 1. In diesem Beispiel empfängt das Programm eine Zeichenfolge vom Benutzer und zeigt sie in einem Meldungsfeld an.In this example, the program receives a string from the user and displays it inside a message box. Das Programm verwendet die MessageBox-Methode, die von der User32.dll-Bibliothek importiert wurde.The program uses the MessageBox method imported from the User32.dll library.

//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);
    }

}

BeispielExample

Beispiel 2.Example 2. Dieses Beispiel veranschaulicht ein C#-Programm, das eine C-Bibliothek aufruft (eine native DLL).This example illustrates a C# program that calls into a C library (a native DLL).

  1. Erstellen Sie die folgende C-Datei mit dem Namen cmdll.c:Create the following C file and name it cmdll.c:
// cmdll.c  
// Compile with: /LD  
int __declspec(dllexport) SampleMethod(int i)  
{  
   return i*10;  
}  

BeispielExample

  1. Öffnen Sie ein Visual Studio x64 (oder x32) Native Tools-Eingabeaufforderungsfenster im Visual Studio-Installationsverzeichnis, und kompilieren Sie die cmdll.c-Datei, indem Sie an der Eingabeaufforderung cl /LD cmdll.c eingeben.Open a Visual Studio x64 (or x32) Native Tools Command Prompt window from the Visual Studio installation directory and compile the cmdll.c file by typing cl /LD cmdll.c at the command prompt.

  2. Erstellen Sie im gleichen Verzeichnis die folgende C#-Datei mit dem Namen cm.cs:In the same directory, create the following C# file and name it 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));  
   }  
}  

BeispielExample

  1. Ö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:Open a Visual Studio x64 (or x32) Native Tools Command Prompt window from the Visual Studio installation directory and compile the cm.cs file by typing:

csc cm.cs (für die x64-Eingabeaufforderung)csc cm.cs (for the x64 command prompt)
– oder –—or—
csc /platform:x86 cm.cs (für die x32-Eingabeaufforderung)csc /platform:x86 cm.cs (for the x32 command prompt)

Dadurch wird die ausführbare Datei cm.exe erstellt.This will create the executable file cm.exe.

  1. Führen Sie cm.exe aus.Run cm.exe. Die SampleMethod-Methode übergibt den Wert 5 an die DLL-Datei, die den mit 10 multiplizierten Wert zurückgibt.The SampleMethod method passes the value 5 to the DLL file, which returns the value multiplied by 10. Das Programm erzeugt die folgende Ausgabe:The program produces the following output:
SampleMethod() returns 50.  

C#-ProgrammiersprachenspezifikationC# Language Specification

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

Siehe auchSee Also

System.Runtime.InteropServices.DllImportAttribute
C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
ModifiziererModifiers