extern (Referenční dokumentace jazyka C#)
Modifikátor extern umožňuje deklarovat metodu, která je implementována externě.Modifikátor extern se běžně používá s atributem DllImport, pokud používáte služby Interop pro volání nespravovaného kódu.V tomto případě musí být metoda 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é slovo extern může také definovat alias externího sestavení, který umožňuje odkazovat na různé verze stejné součásti v rámci jednoho sestavení.Další informace naleznete v tématu externí alias (Referenční dokumentace jazyka C#).
Není správné použít pro změny stejného členu oba modifikátory abstraktní a extern.Pokud použijete modifikátor extern, znamená to, že je metoda implementována mimo kód jazyka C#, zatímco použití modifikátoru abstract značí, že implementace metody není k dispozici v dané třídě.
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
Příklad 1. V tomto příkladu přijme program od uživatele řetězec a zobrazí jej v okně se zprávou.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 C#, který volá knihovnu jazyka C (nativní knihovnu DLL).
1.Vytvořte následující soubor C s názvem cmdll.c:
// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
2.Otevřete z adresáře instalace sady Visual Studio okno příkazového řádku nativních nástrojů Visual Studio x64 (nebo x32) a zkompilujte soubor cmdll.c zadáním parametru cl /LD cmdll.c do příkazového řádku.
3.Ve stejném adresáři vytvořte následující soubor jazyka C# s názvem 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));
}
}
3.Otevřete z adresáře instalace sady Visual Studio okno příkazového řádku nativních nástrojů Visual Studio x64 (nebo x32) a zkompilujte soubor cm.cs zadáním parametru do příkazového řádku:
csc cm.cs (pro příkazový řádek x64) —nebo—csc /platform:x86 cm.cs (pro příkazový řádek x32)
Tím vytvoříte spustitelný soubor cm.exe.
4.Spusťte soubor cm.exe.Metoda SampleMethod předá souboru knihovny DLL hodnotu 5, 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#.
Viz také
Referenční dokumentace
Modifikátory (Referenční dokumentace jazyka C#)