Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
extern Harici olarak uygulanan bir yöntemi bildirmek için değiştiriciyi kullanın. Değiştiricinin extern yaygın kullanımlarından biri, yönetilmeyen koda çağrı yapmak için Birlikte Çalışma hizmetlerini kullandığınızda özniteliğidir DllImport . Bu durumda, aşağıdaki örnekte gösterildiği gibi yöntemini olarak staticda bildirmeniz gerekir:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Dış derleme diğer adını tanımlamak için anahtar sözcüğünü extern de kullanabilirsiniz. Bu diğer adı kullanarak, tek bir derlemenin içinden aynı bileşenin farklı sürümlerine başvurabilirsiniz. Daha fazla bilgi için bkz . extern diğer adı.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
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ğlanmamış olduğu anlamına gelir.
Anahtar sözcüğün extern C# dilinde kullanımları C++'a göre daha sınırlıdı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.
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);
}
}
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 x86) 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 x86) 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 (x86 komut istemi için)
Bu komut yürütülebilir dosyasını
cm.exeoluşturur.cm.exe'i çalıştırın.SampleMethodyö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.