Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Modyfikator extern
służy do deklarowania metody implementowane zewnętrznie. Typowym zastosowaniem extern
modyfikatora jest użycie atrybutu DllImport
w przypadku używania usług Międzyoperajności w celu wywołania kodu niezarządzanego. W takim przypadku metoda musi być również zadeklarowana jako static
, jak pokazano w poniższym przykładzie:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Słowo extern
kluczowe może również definiować alias zestawu zewnętrznego, co umożliwia odwołanie się do różnych wersji tego samego składnika z poziomu pojedynczego zestawu. Aby uzyskać więcej informacji, zobacz extern alias.
Jest to błąd podczas modyfikowania tego samego elementu członkowskiego za pomocą abstrakcji i extern
modyfikatorów. extern
Użycie modyfikatora oznacza, że metoda jest implementowana poza kodem języka C#, natomiast użycie abstract
modyfikatora oznacza, że implementacja metody nie jest podana w klasie.
Użycie słowa kluczowego extern podlega większym ograniczeniom w języku C# niż w języku C++. Aby porównać słowo kluczowe języka C# ze słowem kluczowym C++, zobacz Using extern to Specify Linkage in the C++ Language Reference (Używanie externu do określania połączenia w dokumentacji języka C++).
Przykład 1
W tym przykładzie program odbiera ciąg od użytkownika i wyświetla go wewnątrz pola komunikatu. Program używa MessageBox
metody zaimportowanej 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);
}
}
Przykład 2
W tym przykładzie pokazano program w języku C#, który wywołuje bibliotekę C (natywną bibliotekę DLL).
Utwórz następujący plik C i nadaj mu
cmdll.c
nazwę :// cmdll.c // Compile with: -LD int __declspec(dllexport) SampleMethod(int i) { return i*10; }
Otwórz okno wiersza polecenia narzędzi natywnych programu Visual Studio x64 (lub x32) z katalogu instalacyjnego programu Visual Studio i skompiluj
cmdll.c
plik, wpisując cl -LD cmdll.c w wierszu polecenia.W tym samym katalogu utwórz następujący plik C# i nadaj mu
cm.cs
nazwę :// 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)); } }
Otwórz okno wiersza polecenia narzędzi natywnych programu Visual Studio x64 (lub x32) z katalogu instalacyjnego programu Visual Studio i skompiluj
cm.cs
plik, wpisując polecenie:csc cm.cs (dla wiersza polecenia x64) — lub — csc -platform:x86 cm.cs (w wierszu polecenia x32)
Spowoduje to utworzenie pliku
cm.exe
wykonywalnego .Uruchom program
cm.exe
. MetodaSampleMethod
przekazuje wartość 5 do pliku DLL, który zwraca wartość pomnożną przez 10. Program generuje następujące dane wyjściowe:SampleMethod() returns 50.
specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.