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.
Kata unsafe kunci menunjukkan konteks yang tidak aman, yang diperlukan untuk setiap operasi yang melibatkan penunjuk. Untuk informasi selengkapnya, lihat Kode dan Penunjuk tidak aman.
Anda dapat menggunakan pengubah unsafe dalam deklarasi jenis atau anggota. Oleh karena itu, seluruh tingkat tekstual jenis atau anggota dianggap sebagai konteks yang tidak aman. Misalnya, berikut ini adalah metode yang dideklarasikan dengan pengubah unsafe :
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
Cakupan konteks yang tidak aman diperluas dari daftar parameter ke akhir metode, sehingga pointer juga dapat digunakan dalam daftar parameter:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
Anda juga dapat menggunakan blok yang tidak aman untuk mengaktifkan penggunaan kode yang tidak aman di dalam blok ini. Contohnya:
unsafe
{
// Unsafe context: can use pointers here.
}
Untuk mengkompilasi kode yang tidak aman, Anda harus menentukan opsi pengkompilasi AllowUnsafeBlocks . Kode tidak aman tidak dapat diverifikasi oleh runtime bahasa umum.
Contoh
// compile with: -unsafe
class UnsafeTest
{
// Unsafe method: takes pointer to int.
unsafe static void SquarePtrParam(int* p)
{
*p *= *p;
}
unsafe static void Main()
{
int i = 5;
// Unsafe method: uses address-of operator (&).
SquarePtrParam(&i);
Console.WriteLine(i);
}
}
// Output: 25
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat Kode tidak aman di Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.