Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
extern A módosító használatával deklarálhat egy külsőleg implementált metódust. A módosító gyakran használja az externDllImport attribútumot, amikor az Interop-szolgáltatások használatával nem felügyelt kódba hív be. Ebben az esetben a metódust a következő példában látható módon statickell deklarálnia:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
A kulcsszóval extern külső szerelvény-aliast is definiálhat. Ezzel az aliassal ugyanazon összetevő különböző verzióira hivatkozhat egyetlen szerelvényből. További információ: extern alias.
A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.
A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.
Jótanács
Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.
Hiba az absztrakt és extern a módosítók együttes használatával módosítani ugyanazt a tagot.
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 extern kulcsszónak korlátozottabb felhasználási módja van 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ó.
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);
}
}
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 x86) natív eszközök parancssori ablakot a Visual Studio telepítési könyvtárából, és a parancssorba írja be a
cmdll.ccl -LD cmdll.c fájlt.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 x86) 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.cskövetkező beírással:csc cm.cs (az x64 parancssorhoz) – vagy – csc -platform:x86 cm.cs (az x86 parancssorhoz)
Ez a parancs létrehozza a végrehajtható fájlt
cm.exe.Futtassa az
cm.exeparancsot. ASampleMethodmetó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.