extern (C# Reference)
extern Değiştirici dışarıdan uygulanan bir yöntem bildirmek için kullanılır. Yaygın kullanımı, extern değiştirici iş ile DllImport yönetilmeyen kod çağırmak için birlikte çalışma Hizmetleri kullanırken özniteliği. Bu durumda, yöntem de olarak bildirilmelidir static, aşağıdaki örnekte gösterildiği gibi:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Not
extern Anahtar sözcüğünü de tek bir derleme içinde aynı bileşenin farklı sürümleri başvuru olanaklı kılan bir dış birleştirme diğer tanımlar.Daha fazla bilgi için bkz. dış diğer adı (C# Reference).
Kullanmak için bir hata olduğunu abstract (C# Reference) ve extern birlikte aynı üye değiştirmek için değiştiriciler. Kullanarak extern değiştirici anlamına gelir C# kodu dışında yöntem uygulanır kullanarak ama abstract değiştirici anlamına gelir yöntemi uygulaması sınıfında sağlanmadı.
Not
extern Anahtar sözcüğünü C++ kullanan çok daha sınırlı.C++ anahtar sözcüğü ile karşılaştırmak için bkz: Dış bağlantı belirtmek için kullanma C++ dil başvurusu.
Örnek
Bu örnekte, program kullanıcıdan bir dize alır ve bir ileti kutusu içinde görüntüler. Programın kullandığı MessageBox User32.dll kitaplığından alınan yöntemi.
//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 örnek, bir c programından gelen sonraki örnekte C# program içinde çağrılır bir dll dosyası oluşturur.
// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
Bu örnek iki dosyaları kullanan CM.cs ve Cmdll.c, göstermek için extern. Örnek 2'de C# program içinden çağrılan harici dll oluşturulan c dosyasıdır.
// 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));
}
}
Notlar
Projeyi oluşturmak için:
Derleme Cmdll.c Visual C++ komut satırını kullanarak bir dll için:
cl /LD Cmdll.c
Derleme CM.cs komut satırını kullanarak:
csc CM.cs
Bu yürütülebilir dosya oluşturur CM.exe. Bu programı çalıştırdığınızda, SampleMethod 10 tarafından çarpılan değerini döndürür dll dosyası 5 değeri geçirir.
C# dil belirtiminin
Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.
Ayrıca bkz.
Başvuru
System.Runtime.InteropServices.DllImportAttribute