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).
Skapa följande C-fil och ge den
cmdll.c
namnet :// cmdll.c // Compile with: -LD int __declspec(dllexport) SampleMethod(int i) { return i*10; }
Ö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.Skapa följande C#-fil i samma katalog och ge den
cm.cs
namnet :// 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)); } }
Ö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
.Kör
cm.exe
. MetodenSampleMethod
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.