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 static
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 bkz . C++ Dil Başvurusunda Bağlantı Belirtmek için extern kullanma.
Ö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.
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 İstemi penceresi açın ve komut istemine cl -LD cmdll.c yazarak dosyayı derleyin
cmdll.c
.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 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.exe
oluşturur.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.