Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gunakan pengubah extern untuk mendeklarasikan metode yang diimplementasikan secara eksternal. Penggunaan extern umum pengubah adalah dengan DllImport atribut saat Anda menggunakan layanan Interop untuk memanggil kode yang tidak dikelola. Dalam hal ini, Anda juga harus mendeklarasikan metode sebagai static, seperti yang ditunjukkan dalam contoh berikut:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Anda juga dapat menggunakan extern kata kunci untuk menentukan alias rakitan eksternal. Dengan menggunakan alias ini, Anda dapat mereferensikan berbagai versi komponen yang sama dari dalam satu rakitan. Untuk mengetahui informasi selengkapnya, lihat alias ekstern.
Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.
Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.
Petunjuk / Saran
Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.
Ini adalah kesalahan untuk menggunakan abstrak dan extern pengubah bersama-sama untuk memodifikasi anggota yang sama. Menggunakan pengubah extern berarti bahwa metode diimplementasikan di luar kode C#, sedangkan menggunakan pengubah abstract berarti bahwa implementasi metode tidak disediakan di kelas .
Kata extern kunci 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++.
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 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 Prompt Perintah Alat Asli Visual Studio x64 (atau x86) dari direktori penginstalan Visual Studio dan kompilasi
cmdll.cfile dengan mengetik cl -LD cmdll.c pada prompt 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 Prompt Perintah Alat Asli Visual Studio x64 (atau x86) dari direktori penginstalan Visual Studio dan kompilasi
cm.csfile dengan mengetik:csc cm.cs (untuk prompt perintah x64) —atau— csc -platform:x86 cm.cs (untuk prompt perintah x86)
Perintah ini membuat file
cm.exeyang dapat dieksekusi .Jalankan
cm.exe. MetodeSampleMethodmeneruskan 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#.