extern (C#-referens)

Modifieraren extern används för att deklarera en metod som implementeras externt. En vanlig användning av extern modifieraren är med DllImport attributet när du använder Interop-tjänster för att anropa till ohanterad kod. I det här fallet måste metoden också deklareras som static, enligt följande exempel:

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

Nyckelordet extern kan också definiera ett externt sammansättningsalias, vilket gör det möjligt att referera till olika versioner av samma komponent inifrån en enda sammansättning. Mer information finns i externt alias.

Det är ett fel att använda abstrakta och extern modifierare tillsammans för att ändra samma medlem. extern Att använda modifieraren innebär att metoden implementeras utanför C#-koden, medan modifieraren abstract innebär att metodimplementeringen inte tillhandahålls i klassen.

Det externa nyckelordet har mer begränsade användningsområden i C# än i C++. Om du vill jämföra nyckelordet C# med nyckelordet C++ läser du Använda extern för att ange länkning i C++-språkreferensen.

Exempel 1

I det här exemplet tar programmet emot en sträng från användaren och visar den i en meddelanderuta. Programmet använder den metod som MessageBox importerats från biblioteket 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);
    }
}

Exempel 2

Det här exemplet illustrerar ett C#-program som anropar till ett C-bibliotek (en intern DLL).

  1. Skapa följande C-fil och ge den cmdll.cnamnet :

    // cmdll.c
    // Compile with: -LD
    int __declspec(dllexport) SampleMethod(int i)
    {
      return i*10;
    }
    
  2. Öppna ett Visual Studio x64-fönster (eller x32) native tools command prompt från Visual Studio-installationskatalogen cmdll.c och kompilera filen genom att skriva cl -LD cmdll.c i kommandotolken.

  3. Skapa följande C#-fil i samma katalog och ge den cm.csnamnet :

    // 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. Öppna ett visual Studio x64 -fönster (eller x32) med kommandotolken från Visual Studio-installationskatalogen cm.cs och kompilera filen genom att skriva:

    csc cm.cs (för kommandotolken x64) – eller – csc -platform:x86 cm.cs (för kommandotolken x32)

    Då skapas den körbara filen cm.exe.

  5. Kör cm.exe. Metoden SampleMethod skickar värdet 5 till DLL-filen, som returnerar värdet multiplicerat med 10. Programmet genererar följande utdata:

    SampleMethod() returns 50.
    

Språkspecifikation för C#

Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.

Se även