extern (C# referencia)
A extern
módosító egy külsőleg implementált metódus deklarálásához használható. A módosító gyakran használja az extern
DllImport
attribútumot, amikor interop-szolgáltatásokat használ a nem felügyelt kód meghívásához. Ebben az esetben a metódust is deklarálni static
kell a következő példában látható módon:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
A extern
kulcsszó megadhat egy külső szerelvény-aliast is, amely lehetővé teszi ugyanazon összetevő különböző verzióinak hivatkozását egyetlen szerelvényből. További információ: extern alias.
Hiba az absztrakt és extern
módosító elemek együttes használata ugyanazon tag módosításához. extern
A módosító használata azt jelenti, hogy a metódus a C# kódon kívül van implementálva, míg a abstract
módosító használata azt jelenti, hogy a metódus implementációja nem szerepel az osztályban.
A kiirtott kulcsszó korlátozottabban használja a C#-ban, mint a C++-ban. A C#-kulcsszó és a C++ kulcsszó összehasonlítása a C++ nyelvi referenciában a Hivatkozás megadása extern használatával című témakörben olvasható.
1. példa
Ebben a példában a program egy sztringet kap a felhasználótól, és megjeleníti azt egy üzenetmezőben. A program a MessageBox
User32.dll könyvtárból importált metódust használja.
//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);
}
}
2. példa
Ez a példa egy C# programot mutat be, amely egy C-kódtárba (natív DLL-be) hív be.
Hozza létre a következő C fájlt, és nevezze el:
cmdll.c
// cmdll.c // Compile with: -LD int __declspec(dllexport) SampleMethod(int i) { return i*10; }
Nyisson meg egy Visual Studio x64 (vagy x32) natív eszközök parancssori ablakot a Visual Studio telepítési könyvtárából, és fordítsa le a
cmdll.c
fájlt a parancssorba a cl -LD cmdll.c beírásával.Ugyanabban a könyvtárban hozza létre a következő C#-fájlt, és nevezze el:
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)); } }
Nyisson meg egy Visual Studio x64 (vagy x32) natív eszközök parancssori ablakot a Visual Studio telepítési könyvtárából, és fordítsa le a fájlt a
cm.cs
következő beírással:csc cm.cs (az x64 parancssorhoz) – vagy – csc -platform:x86 cm.cs (az x32 parancssorhoz)
Ezzel létrehozza a végrehajtható fájlt
cm.exe
.Futtassa az
cm.exe
parancsot. ASampleMethod
metódus átadja az 5 értéket a DLL-fájlnak, amely 10-sel szorozva adja vissza az értéket. A program a következő kimenetet állítja elő:SampleMethod() returns 50.
C# nyelvspecifikáció
További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.