Sdílet prostřednictvím


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

Klíčová slova jazyka C#

Modifikátory (Referenční dokumentace jazyka C#)

DllImportAttribute

Koncepty

Průvodce programováním v C#

Další zdroje

Referenční dokumentace jazyka C#