Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Gebruik de extern wijzigingsfunctie 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 u ook de methode declareren als static, zoals wordt weergegeven in het volgende voorbeeld:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
U kunt ook het extern trefwoord gebruiken om een externe assemblyalias te definiëren. Met behulp van deze alias kunt u verwijzen naar verschillende versies van hetzelfde onderdeel vanuit één assembly. Zie extern alias voor meer informatie.
De C#-taalreferentiedocumenten beschrijven de meest recent uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.
De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.
Aanbeveling
Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.
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 is opgegeven.
Het extern 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.
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);
}
}
In dit voorbeeld ziet u een C#-programma dat een C#-bibliotheek aanroept (een systeemeigen DLL).
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; }Open een Visual Studio x64 (of x86) Native Tools Command Prompt-venster vanuit de installatiemap van Visual Studio en compileer het
cmdll.cbestand door cl -LD cmdll.c te typen bij de opdrachtprompt.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)); } }Open een opdrachtpromptvenster van Visual Studio x64 (of x86) Native Tools vanuit de installatiemap van Visual Studio en compileer het
cm.csbestand door het volgende te typen:csc cm.cs (voor de x64-opdrachtprompt) of csc -platform:x86 cm.cs (voor de x86-opdrachtprompt)
Met deze opdracht wordt het uitvoerbare bestand
cm.exegemaakt.Voer
cm.exeuit. DeSampleMethodmethode 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.