Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
extern Modifikátor se používá k deklaraci metody, která je implementována externě. Běžné použití modifikátoru extern je s atributem DllImport při použití služeb interoperability k 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();
Klíčové extern slovo může také definovat alias externího sestavení, který umožňuje odkazovat na různé verze stejné komponenty z jednoho sestavení. Další informace najdete v externím aliasu.
Jedná se o chybu při použití abstraktních a extern modifikátorů ke společné úpravě stejného členu. Použití modifikátoru extern 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ě poskytována.
Externí klíčové slovo má v jazyce C# omezenější použití než v jazyce C++. Porovnání klíčového slova jazyka C# s klíčovým slovem jazyka C++ naleznete v tématu Použití extern k určení propojení v referenční dokumentaci jazyka C++.
Příklad 1
V tomto příkladu program obdrží řetězec od uživatele a zobrazí ho uvnitř pole zprávy. Program používá metodu MessageBox 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 jazyka C#, který volá knihovnu jazyka C (nativní knihovnu 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ů sady Visual Studio x64 (nebo x32) z instalačního adresáře sady Visual Studio a zkompilujte
cmdll.csoubor zadáním cl -LD cmdll.c na příkazovém řádku.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)); } }V instalačním adresáři sady Visual Studio otevřete okno příkazového řádku nativních nástrojů sady Visual Studio x64 (nebo x32) a zkompilujte
cm.cssoubor zadáním: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. MetodaSampleMethodpředá hodnotu 5 do souboru DLL, který vrátí hodnotu vynásobenou hodnotou 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#.