Bagikan melalui


tidak aman (Referensi C#)

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.

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#.

Gunakan pengubah unsafe dalam deklarasi jenis atau anggota. Seluruh tingkat tekstual jenis atau anggota adalah konteks yang tidak aman. Misalnya, metode berikut dinyatakan 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 Anda juga dapat menggunakan pointer 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 . Runtime bahasa umum tidak dapat memverifikasi kode yang tidak aman.

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#.

Lihat juga