extern (Referensi C#)
Pengubah extern
digunakan untuk mendeklarasikan metode yang diimplementasikan secara eksternal. Penggunaan umum pengubah extern
adalah dengan atribut DllImport
saat Anda menggunakan layanan Interop untuk memanggil kode yang tidak dikelola. Dalam hal ini, metode juga harus dinyatakan sebagai static
, seperti yang ditunjukkan dalam contoh berikut:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Kata kunci extern
juga dapat menentukan alias rakitan eksternal, yang memungkinkan untuk mereferensikan versi lain dari komponen yang sama dari dalam satu rakitan. Untuk mengetahui informasi selengkapnya, lihat alias ekstern.
Merupakan suatu kesalahan untuk menggunakan abstract dan pengubah extern
bersama-sama untuk memodifikasi anggota yang sama. Penggunaan pengubah extern
berarti bahwa metode diimplementasikan di luar kode C#, sedangkan penggunaan pengubah abstract
berarti bahwa implementasi metode tidak disediakan dalam kelas.
Kata kunci extern memiliki penggunaan yang lebih terbatas dalam C# daripada di C++. Untuk membandingkan kata kunci C# dengan kata kunci C++, lihat Menggunakan ekstern untuk Menentukan Tautan di Referensi Bahasa C++.
Contoh 1
Dalam contoh ini, program menerima string dari pengguna dan menampilkannya di dalam kotak pesan. Program ini menggunakan metode MessageBox
yang diimpor dari pustaka User32.dll.
//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);
}
}
Contoh 2
Contoh ini mengilustrasikan program C# yang memanggil ke pustaka C (DLL asli).
Buat file C berikut dan beri nama
cmdll.c
:// cmdll.c // Compile with: -LD int __declspec(dllexport) SampleMethod(int i) { return i*10; }
Buka jendela Perintah Alat Asli Visual Studio x64 (atau x32) dari direktori penginstalan Visual Studio dan kompilasi file
cmdll.c
dengan mengetik cl -LD cmdll.c pada perintah.Di direktori yang sama, buat file C# berikut dan beri nama
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)); } }
Buka jendela Perintah Alat Asli Visual Studio x64 (atau x32) dari direktori penginstalan Visual Studio dan kompilasi file
cm.cs
dengan mengetik:csc cm.cs (untuk perintah x64) —atau— csc -platform:x86 cm.cs (untuk perintah x32)
Ini akan membuat file yang dapat dieksekusi
cm.exe
.Jalankan
cm.exe
. MetodeSampleMethod
meneruskan nilai 5 ke file DLL, yang mengembalikan nilai yang dikalikan dengan 10. Contoh ini menghasilkan output berikut:SampleMethod() returns 50.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.