Udostępnij za pośrednictwem


extern (odwołanie w C#)

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

Słowa kluczowe języka C#

Modyfikatory (odwołanie w C#)

DllImportAttribute

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#