extern (Referenční dokumentace jazyka C#)
externModifikátor slouží k deklaraci metody, která je implementována externě. Běžné použití extern modifikátoru je s DllImport atributem, pokud používáte služby vzájemné spolupráce pro volání do nespravovaného kódu. V tomto případě musí být metoda také deklarována jako static , jak je znázorněno v následujícím příkladu:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
externKlíčové slovo může také definovat externí alias sestavení, který umožňuje odkazování na různé verze stejné součásti v rámci jednoho sestavení. Další informace najdete v tématu extern alias.
Použití abstraktních a extern modifikátorů pro změnu stejného člena je chybné. Použití extern modifikátoru znamená, že metoda je implementována mimo kód jazyka C#, zatímco použití abstract modifikátoru znamená, že implementace metody není ve třídě k dispozici.
Externí klíčové slovo má v jazyce C# omezenější použití než v jazyce C++. Chcete-li porovnat klíčové slovo C# s klíčovým slovem C++, přečtěte si informace v kapitole Určení zapojení v referenci jazyka C++.
Příklad 1
V tomto příkladu program obdrží od uživatele řetězec a zobrazí jej v okně se zprávou. Program používá MessageBox metodu importovanou z knihovny 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);
}
}
Příklad 2
Tento příklad znázorňuje program v jazyce C#, který volá do knihovny jazyka C (nativní knihovna DLL).
Vytvořte následující soubor C a pojmenujte ho
cmdll.c:// cmdll.c // Compile with: -LD int __declspec(dllexport) SampleMethod(int i) { return i*10; }otevřete okno příkazového řádku nativních nástrojů Visual Studio x64 (nebo x32) z instalačního adresáře Visual Studio a zkompilujte
cmdll.csoubor tak, že na příkazovém řádku zadáte cl-LD cmdll. c .Ve stejném adresáři vytvořte následující soubor C# a pojmenujte ho
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)); } }otevřete okno příkazového řádku nativních nástrojů Visual Studio x64 (nebo x32) z instalačního adresáře Visual Studio a zkompilujte
cm.cssoubor tak, že zadáte:CSC cm. cs (pro příkazový řádek x64), nebo – CSC-Platform: x86 cm. cs (pro příkazový řádek x32)
Tím se vytvoří spustitelný soubor
cm.exe.Spusťte
cm.exe.SampleMethodMetoda předá hodnotu 5 souboru DLL, která vrací hodnotu vynásobenou 10. Program vytvoří následující výstup:SampleMethod() returns 50.
specifikace jazyka C#
Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.