Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
extern Użyj modyfikatora, aby zadeklarować metodę zaimplementowaną zewnętrznie. Typowym zastosowaniem modyfikatora jest użycie atrybutu externDllImport w przypadku używania usług Międzyoperajności w celu wywołania kodu niezarządzanego. W takim przypadku należy również zadeklarować metodę jako static, jak pokazano w poniższym przykładzie:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Możesz również użyć słowa kluczowego extern , aby zdefiniować alias zestawu zewnętrznego. Za pomocą tego aliasu można odwoływać się do różnych wersji tego samego składnika z poziomu jednego zestawu. Aby uzyskać więcej informacji, zobacz extern alias.
Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację dla funkcjonalności w publicznych wersjach testowych nadchodzącego wydania języka.
Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.
Wskazówka
Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.
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.
Słowo extern kluczowe ma bardziej ograniczone zastosowania 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++).
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);
}
}
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.cnazwę :// 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 x86) z katalogu instalacyjnego programu Visual Studio i skompiluj
cmdll.cplik, wpisując cl -LD cmdll.c w wierszu polecenia.W tym samym katalogu utwórz następujący plik C# i nadaj mu
cm.csnazwę :// 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 x86) z katalogu instalacyjnego programu Visual Studio i skompiluj
cm.csplik, wpisując polecenie:csc cm.cs (dla wiersza polecenia x64) — lub — csc -platform:x86 cm.cs (w wierszu polecenia x86)
To polecenie tworzy plik
cm.exewykonywalny .Uruchom program
cm.exe. MetodaSampleMethodprzekazuje 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#.