Sdílet prostřednictvím


Extern (C#-Reference)

extern Modifikátoru deklarovat metodu, která je implementována externě.Společné použití extern je modifikátor se DllImport atributu při použití služby Interop volání nespravovaný kód.V tomto případě metoda musí také deklarovat jako static, jak ukazuje následující příklad:

[DllImport("avifil32.dll")]
private static extern void AVIFileInit();

[!POZNÁMKA]

extern Klíčové slovo můžete také definovat sestavení externí alias umožňuje odkazovat na různé verze stejné součásti z v rámci jednoho sestavení.Další informace naleznete v tématu externí alias (C#-Reference).

Je při použití abstraktní (C#-Reference) a extern modifikátory společně k úpravě stejného člena.Použití extern modifikátor znamená, že metoda je implementována mimo kód C# vzhledem k tomu, že použití abstract modifikátor znamená, že implementace metody není k dispozici ve třídě.

[!POZNÁMKA]

extern Klíčové slovo má více omezené použití než v jazyce C++.Chcete-li porovnat s klíčovým slovem C++, viz Použití k určení propojení extern v C++ jazyková Reference.

Příklad

V tomto příkladu program přijímá řetězec od uživatele a zobrazí v okně se zprávou.Program používá MessageBox metoda dovážené 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);
        }

    }

Tento příklad vytvoří knihovnu DLL z c program, který je vyvolán z aplikace C# v dalším příkladu.

// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
   return i*10;
}

Tento příklad používá dva soubory CM.cs a Cmdll.c, prokázat extern.C soubor je že vytvořen externí knihovna DLL v příkladu 2, který je vyvolán z aplikace C#.

// 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));
   }
}
  

Poznámky

Vytvoření projektu:

  • Kompilace Cmdll.c knihovnu DLL jazyka Visual C++ příkazového řádku:

    cl /LD Cmdll.c

  • Kompilace CM.cs pomocí příkazového řádku:

    csc CM.cs

Vytvoří spustitelný soubor CM.exe.Při spuštění tohoto programu SampleMethod souboru DLL, který vrátí hodnotu vynásobené 10 předá hodnotu 5.

Specifikace jazyka C#

Další informace naleznete 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 (C#-Reference)

System.Runtime.InteropServices.DllImportAttribute

Koncepty

Příručka programování C#

Další zdroje

C#-Reference