Udostępnij za pośrednictwem


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

Słowa kluczowe języka C#

Modyfikatory (C# odniesienia)

System.Runtime.InteropServices.DllImportAttribute

Koncepcje

Podręcznik programowania C#

Inne zasoby

C# odniesienia