Megosztás a következőn keresztül:


extern (C# referencia)

A extern módosító egy külsőleg implementált metódus deklarálásához használható. A módosító gyakran használja az externDllImport attribútumot, amikor interop-szolgáltatásokat használ a nem felügyelt kód meghívásához. Ebben az esetben a metódust is deklarálni statickell a következő példában látható módon:

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

A extern kulcsszó megadhat egy külső szerelvény-aliast is, amely lehetővé teszi ugyanazon összetevő különböző verzióinak hivatkozását egyetlen szerelvényből. További információ: extern alias.

Hiba az absztrakt és extern módosító elemek együttes használata ugyanazon tag módosításához. extern A módosító használata azt jelenti, hogy a metódus a C# kódon kívül van implementálva, míg a abstract módosító használata azt jelenti, hogy a metódus implementációja nem szerepel az osztályban.

A kiirtott kulcsszó korlátozottabban használja a C#-ban, mint a C++-ban. A C#-kulcsszó és a C++ kulcsszó összehasonlítása a C++ nyelvi referenciában a Hivatkozás megadása extern használatával című témakörben olvasható.

1. példa

Ebben a példában a program egy sztringet kap a felhasználótól, és megjeleníti azt egy üzenetmezőben. A program a MessageBox User32.dll könyvtárból importált metódust használja.

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

2. példa

Ez a példa egy C# programot mutat be, amely egy C-kódtárba (natív DLL-be) hív be.

  1. Hozza létre a következő C fájlt, és nevezze el:cmdll.c

    // cmdll.c
    // Compile with: -LD
    int __declspec(dllexport) SampleMethod(int i)
    {
      return i*10;
    }
    
  2. Nyisson meg egy Visual Studio x64 (vagy x32) natív eszközök parancssori ablakot a Visual Studio telepítési könyvtárából, és fordítsa le a cmdll.c fájlt a parancssorba a cl -LD cmdll.c beírásával.

  3. Ugyanabban a könyvtárban hozza létre a következő C#-fájlt, és nevezze el: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. Nyisson meg egy Visual Studio x64 (vagy x32) natív eszközök parancssori ablakot a Visual Studio telepítési könyvtárából, és fordítsa le a fájlt a cm.cs következő beírással:

    csc cm.cs (az x64 parancssorhoz) – vagy – csc -platform:x86 cm.cs (az x32 parancssorhoz)

    Ezzel létrehozza a végrehajtható fájlt cm.exe.

  5. Futtassa az cm.exe parancsot. A SampleMethod metódus átadja az 5 értéket a DLL-fájlnak, amely 10-sel szorozva adja vissza az értéket. A program a következő kimenetet állítja elő:

    SampleMethod() returns 50.
    

C# nyelvspecifikáció

További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.

Lásd még