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).

  1. 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;
    }
    
  2. 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.c soubor tak, že na příkazovém řádku zadáte cl-LD cmdll. c .

  3. 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));
        }
    }
    
  4. 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.cs soubor 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 .

  5. 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#.

Viz také