extern (C# Başvurusu)

extern Değiştirici, harici olarak uygulanan bir yöntemi bildirmek için kullanılır. Değiştiricinin extern yaygın bir kullanımı, yönetilmeyen koda çağrı yapmak için Birlikte Çalışma hizmetlerini kullanırken özniteliğiyle birlikte DllImport kullanılır. Bu durumda, aşağıdaki örnekte gösterildiği gibi yöntemi de olarak staticbildirilmelidir:

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

Anahtar extern sözcüğü, aynı bileşenin farklı sürümlerine tek bir derleme içinden başvurmayı mümkün kılan bir dış derleme diğer adı da tanımlayabilir. Daha fazla bilgi için bkz . extern diğer adı.

Aynı üyeyi değiştirmek için soyut ve extern değiştiricileri birlikte kullanmak bir hatadır. Değiştiricinin extern kullanılması yöntemin C# kodu dışında uygulandığı, değiştiricinin abstract kullanılması ise yöntem uygulamasının sınıfında 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 1

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

//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, C kitaplığına (yerel DLL) çağıran bir C# programı gösterilmektedir.

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

    // cmdll.c
    // Compile with: -LD
    int __declspec(dllexport) SampleMethod(int i)
    {
      return i*10;
    }
    
  2. Visual Studio yükleme dizininden bir Visual Studio x64 (veya x32) Yerel Araçlar Komut İstemi penceresi açın ve komut istemine cl -LD cmdll.c yazarak dosyayı derleyincmdll.c.

  3. Aynı dizinde aşağıdaki C# dosyasını oluşturun ve adlandırın 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));
        }
    }
    
  4. Visual Studio yükleme dizininden bir Visual Studio x64 (veya x32) Yerel Araçlar Komut İstemi penceresi açın ve şu komutu yazarak dosyayı derleyin cm.cs :

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

    Bu işlem yürütülebilir dosyasını cm.exeoluşturur.

  5. cm.exe'i çalıştırın. SampleMethod yöntemi, 5 değerini DLL dosyasına geçirir ve değerin 10 ile çarpılması sonucunu verir. Program aşağıdaki çıkışı oluşturur:

    SampleMethod() returns 50.
    

C# dili 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.