tak terkelola (Referensi C# )

Kata kunci unsafe menunjukkan konteks yang tak terkelola, yang diperlukan untuk setiap operasi yang melibatkan pointer. Untuk informasi selengkapnya, lihat Kode dan Pointer Tidak Aman.

Anda dapat menggunakan pengubah unsafe dalam deklarasi jenis atau anggota. Oleh karena itu, seluruh tingkat tekstual dari 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.
}

Ruang lingkup konteks yang tidak aman meluas 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 mengompilasi kode tak terkelola, Anda harus menentukan opsi pengompilasi AllowUnsafeBlocks. Kode tak terkelola 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 dalam Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.

Lihat juga