extern (C# Başvurusu)
externDeğiştirici, dışarıdan uygulanan bir yöntemi bildirmek için kullanılır. Bir değiştiricinin ortak kullanımı, extern DllImport yönetilmeyen koda çağrı yapmak Için birlikte çalışabilirlik Hizmetleri kullandığınızda özniteliğiyle birlikte bulunur. Bu durumda, static Aşağıdaki örnekte gösterildiği gibi yöntemi de olarak bildirilmelidir:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
externAnahtar sözcüğü aynı zamanda bir dış derleme diğer adı tanımlayabilir, bu da aynı bileşenin farklı sürümlerine tek bir bütünleştirilmiş kod içinden başvuruda bulunmak mümkün hale gelir. Daha fazla bilgi için bkz. extern diğer ad.
extern Aynı üyeyi değiştirmek için soyut ve değiştiricilerin birlikte kullanılması hatadır. externDeğiştiricinin kullanılması yöntemin C# kodu dışında uygulandığı anlamına gelir, ancak abstract değiştiricinin kullanılması, 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 1
Bu örnekte, Program kullanıcıdan bir dize alır ve iletiyi bir ileti kutusu içinde görüntüler. Program, MessageBox User32.dll kitaplığından içeri aktarılan yöntemi 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 örnek, bir C kitaplığına (yerel DLL) çağıran bir C# programını gösterir.
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; }Visual Studio yükleme dizininden bir Visual Studio x64 (veya x32) yerel araçlar komut istemi penceresi açın ve
cmdll.ckomut istemine cl-LD cmdll. c yazarak dosyayı derleyin.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)); } }Visual Studio yükleme dizininden Visual Studio x64 (veya x32) yerel araçlar komut istemi penceresi açın ve
cm.csşunu yazarak dosyayı derleyin:CSC cm. cs (x64 komut istemi için) — veya — csc-platform: x86 cm. cs (x32 komut istemi için)
Bu, yürütülebilir dosyayı oluşturur
cm.exe.cm.exeöğesini çalıştırın.SampleMethodYöntemi, 5 değerini, 10 ile çarpılan değeri döndüren dll dosyasına geçirir. Program aşağıdaki çıktıyı ü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.