extern (C# odniesienia)
extern Stosowany jest modyfikator zadeklarować metody, która jest zaimplementowana zewnętrznie.Powszechnym zastosowaniem extern modyfikator jest z DllImport atrybutu podczas korzystania z usług międzyoperacyjne Aby wywoływać kod niezarządzany.W tym przypadku metoda powinna być także zadeklarowana jako static, jak pokazano w następującym przykładzie:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
[!UWAGA]
extern Słowa kluczowego można również zdefiniować aliasu zewnętrznego zestawu umożliwia odwołać różne wersje tego samego składnika z wewnątrz jednego zestawu.Aby uzyskać więcej informacji, zobacz alias zewnętrzny (C# odniesienia).
Jest błędem, aby użyć streszczenie (C# odniesienia) i extern modyfikatorów razem do modyfikowania tego samego członka.Za pomocą extern modyfikator oznacza, że metoda jest realizowane poza kod C#, należy za pomocą abstract modyfikator oznacza, że implementacji metody nie podano w klasie.
[!UWAGA]
extern Słowa kluczowego ma bardziej ograniczone zastosowań niż w języku C++.Aby porównać ze słowem kluczowym C++, zobacz Użycie extern, aby określić powiązanie w Skorowidzu języka C++.
Przykład
W tym przykładzie program otrzymuje ciąg od użytkownika i wyświetla go wewnątrz okna komunikatu.Program używa MessageBox metoda importowanym z biblioteki 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);
}
}
To przykładowe polecenie tworzy bibliotekę DLL z c programu, który jest wywoływany z w programie C# w następnym przykładzie.
// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
W tym przykładzie dwa pliki, CM.cs i Cmdll.c, w celu wykazania extern.C pliku jest DLL zewnętrznych utworzonych z przykładu 2, że jest wywoływana z programu języka 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));
}
}
Uwagi
Tworzenie projektu:
Skompiluj Cmdll.c do biblioteki DLL przy użyciu wiersza polecenia programu Visual C++:
cl /LD Cmdll.c
Skompiluj CM.cs przy użyciu wiersza polecenia:
csc CM.cs
Spowoduje to utworzenie pliku wykonywalnego CM.exe.Po uruchomieniu tego programu, SampleMethod przekazuje wartość 5 do pliku DLL, która zwraca wartość pomnożona przez 10.
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.
Zobacz też
Informacje
System.Runtime.InteropServices.DllImportAttribute