extern (C# Başvurusu)

extern Değiştirici, harici olarak uygulanan bir yöntemi bildirmek için kullanılır. Yönetilmeyen koda extern çağrı yapmak için Birlikte Çalışma hizmetlerini kullanırken değiştiricinin DllImport yaygın kullanımlarından biri özniteliğidir. Bu durumda, aşağıdaki örnekte gösterildiği gibi staticyöntemi olarak da bildirilmelidir:

[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 olarak 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 cmdll.ccl -LD cmdll.c yazarak dosyayı derleyin.

  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 şunu 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 öğesini çalıştırın. yöntemi, SampleMethod 5 değerini DLL dosyasına geçirir ve değerin 10 ile çarpılması sonucunu verir. Program aşağıdaki çıkışı üretir:

    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.