Aracılığıyla paylaş


extern (C# Başvurusu)

extern değiştiricisi dışarıdan uygulanan bir yöntemi bildirmek için kullanılır.extern değiştiricisinin yaygın bir kullanımı, yönetilmeyen koda çağrı yapmak için Birlikte Çalışma hizmetlerini kullanırken DllImport özniteliğiyle yapılır.Bu durumda, aşağıdaki örnekte gösterildiği gibi, yöntem de static olarak bildirilmelidir:

[DllImport("avifil32.dll")]
private static extern void AVIFileInit();

extern anahtar sözcüğü, aynı bileşenin farklı sürümlerine tek bir derleme içinden başvurmayı olanaklı kılan harici bir derleme takma adı da tanımlayabilir.Daha fazla bilgi için bkz. extern alias (C# Başvurusu).

Aynı üyeyi değiştirmek için abstract ve extern değiştiricilerini kullanmak bir hatadır.extern değiştiricisini kullanmak, yöntemin C# kodunun dışında uygulandığı anlamına gelirken, abstract değiştiricisini kullanmak yöntem uygulamasının sınıfta sağlanmadığı anlamına gelir.

extern anahtar sözcüğünün kullanımları, C++'a göre C#'de daha fazladır.C# anahtar sözcüğünü C++ anahtar sözcüğüyle karşılaştırmak için, C++ Dilinde Bağlantı Belirtmek için extern Kullanma Başvurusu'na bakın.

Örnek

Örnek 1. Bu örnekte, program kullanıcıdan bir dize alır ve bir ileti kutusu içinde görüntüler.Program, User32.dll kitaplığından aktarılan MessageBox yöntemini kullanır.

//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);
        }

    }

Örnek 2. Bu örnekte, bir C kitaplığına (bir yerel DLL) çağrıda bulunan bir C# programı gösterilmektedir.

1.Aşağıdaki C dosyası oluşturun ve cmdll.c olarak adlandırın:

// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
   return i*10;
}

2.Visual Studio kurulum dizininden bir Visual Studio x64 (veya x32) Yerel Araçlar Komut İstemi penceresi açın ve komut istemine cl /LD cmdll.c yazarak cmdll.c dosyasını derleyin.

3.Aynı dizinde, aşağıdaki C# dosyasını oluşturun ve cm.cs olarak adlandırın:

// 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.Visual Studio kurulum dizininden bir Visual Studio x64 (veya x32) Yerel Araçlar Komut İstemi penceresi açın ve aşağıdakileri yazarak cm.cs dosyasını derleyin:

csc cm.cs (x64 komut istemi için) —veya—csc /platform:x86 cm.cs (x32 komut istemi için)

Bu, cm.exe yürütülebilir dosyasını oluşturur.

4.cm.exe dosyasını çalıştırın.SampleMethod yöntemi 5 değerini, değeri 10 ile çarpılmış olarak döndüren DLL dosyasına geçirir. Program aşağıdaki çıkışı üretir:

SampleMethod() returns 50.

C# Dil Belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

C# Anahtar Sözcükleri

Değiştiriciler (C# Başvurusu)

DllImportAttribute

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu