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 implementowanej zewnętrznie.Typowe zastosowanie modyfikatora extern polega na użyciu go wraz z atrybutem DllImport w przypadku używania usług międzyoperacyjnych w celu wywołania kodu niezarządzanego.W tym przypadku metoda musi być także zadeklarowana jako static, tak jak pokazano w poniższym przykładzie:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Słowo kluczowe extern może także definiować alias zestawu zewnętrznego, co umożliwia odwoływanie się do różnych wersji jednego składnika z poziomu jednego zestawu.Aby uzyskać więcej informacji, zobacz extern alias (odwołanie w C#).
Błędem jest użycie razem modyfikatorów abstract i extern w celu zmodyfikowania jednego elementu członkowskiego.Użycie modyfikatora extern oznacza, że metoda jest zaimplementowana poza kodem w języku C#, podczas gdy użycie modyfikatora abstract oznacza, że implementacja metody nie jest dostarczana w klasie.
Użycie słowa kluczowego extern podlega większym ograniczeniom w języku C# niż w języku C++.Aby porównać to słowo kluczowe w języku C# z wersją w języku C++, zobacz temat „Używanie słowa kluczowego extern w celu określenia powiązania” w dokumentacji języka C++.
Przykład
Przykład 1. W tym przykładzie program odbiera ciąg od użytkownika i wyświetla go w oknie komunikatu.Program używa metody MessageBox importowanej 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# wywołujący bibliotekę języka C (natywna biblioteka DLL).
1.Utwórz następujący plik języka C i nadaj mu nazwę cmdll.c:
// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
2.Otwórz okno wiersza polecenia programu Visual Studio x64 (lub x32) Native Tools w katalogu instalacyjnym programu Visual Studio i skompiluj plik cmdll.c, wpisując polecenie cl /LD cmdll.c w wierszu polecenia.
3.W tym samym katalogu utwórz następujący plik języka C# i nadaj mu nazwę cm.cs:
// 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));
}
}
3.Otwórz okno wiersza polecenia programu Visual Studio x64 (lub x32) Native Tools w katalogu instalacyjnym programu Visual Studio i skompiluj plik cm.cs, wpisując następujące polecenie:
csc cm.cs (w wierszu polecenia wersji x64) —lub—csc /platform:x86 cm.cs (w wierszu polecenia wersji x32)
Spowoduje to utworzenie pliku wykonywalnego cm.exe.
4.Uruchom plik cm.exe.Metoda SampleMethod przekazuje wartość 5 do pliku DLL, który zwraca tę wartość pomnożoną przez 10. Program tworzy 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#.
Zobacz też
Informacje
Koncepcje
Przewodnik programowania w języku C#