extern (C#-verwijzing)

De extern modifier wordt gebruikt om een methode te declareren die extern wordt geïmplementeerd. Een veelvoorkomend gebruik van de extern wijzigingsfunctie is met het DllImport kenmerk wanneer u Interop-services gebruikt om onbeheerde code aan te roepen. In dit geval moet de methode ook worden gedeclareerd als static, zoals wordt weergegeven in het volgende voorbeeld:

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

Het extern trefwoord kan ook een externe assemblyalias definiëren, waardoor er vanuit één assembly naar verschillende versies van hetzelfde onderdeel kan worden verwezen. Zie extern alias voor meer informatie.

Het is een fout om de abstracte en extern modifiers samen te gebruiken om hetzelfde lid te wijzigen. Het gebruik van de extern modifier betekent dat de methode buiten de C#-code wordt geïmplementeerd, terwijl het gebruik van de abstract modifier betekent dat de methode-implementatie niet in de klasse wordt geleverd.

Het externe trefwoord heeft meer beperkte toepassingen in C# dan in C++. Als u het C#-trefwoord wilt vergelijken met het C++-trefwoord, raadpleegt u Extern gebruiken om Koppeling opgeven in de C++-taalreferentie op te geven.

Voorbeeld 1

In dit voorbeeld ontvangt het programma een tekenreeks van de gebruiker en wordt deze weergegeven in een berichtvak. Het programma gebruikt de MessageBox methode die is geïmporteerd uit de User32.dll-bibliotheek.

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

Voorbeeld 2

In dit voorbeeld ziet u een C#-programma dat een C#-bibliotheek aanroept (een systeemeigen DLL).

  1. Maak het volgende C-bestand en geef het de cmdll.cnaam:

    // cmdll.c
    // Compile with: -LD
    int __declspec(dllexport) SampleMethod(int i)
    {
      return i*10;
    }
    
  2. Open een Visual Studio x64 (of x32) Native Tools Command Prompt-venster vanuit de installatiemap van Visual Studio en compileer het cmdll.c bestand door cl -LD cmdll.c te typen bij de opdrachtprompt.

  3. Maak in dezelfde map het volgende C#-bestand en geef het de cm.csnaam:

    // 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. Open een Visual Studio x64 (of x32) Native Tools Command Prompt-venster vanuit de installatiemap van Visual Studio en compileer het cm.cs bestand door het volgende te typen:

    csc cm.cs (voor de x64-opdrachtprompt) of csc -platform:x86 cm.cs (voor de x32-opdrachtprompt)

    Hiermee wordt het uitvoerbare bestand cm.exegemaakt.

  5. Voer cm.exe uit. De SampleMethod methode geeft de waarde 5 door aan het DLL-bestand, waarmee de waarde wordt vermenigvuldigd met 10. Het programma produceert de volgende uitvoer:

    SampleMethod() returns 50.
    

C#-taalspecificatie

Zie de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.

Zie ook