Udostępnij za pośrednictwem


unsafe (odwołanie w C#)

Słowo unsafe kluczowe oznacza niebezpieczny kontekst, który jest wymagany dla każdej operacji obejmującej wskaźniki. Aby uzyskać więcej informacji, zobacz Niebezpieczny kod i wskaźniki.

Modyfikator można użyć unsafe w deklaracji typu lub elementu członkowskiego. Cały zakres tekstowy typu lub elementu członkowskiego jest zatem uważany za niebezpieczny kontekst. Na przykład następująca metoda jest zadeklarowana za pomocą unsafe modyfikatora:

unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
    // Unsafe context: can use pointers here.
}

Zakres niebezpiecznego kontekstu rozciąga się z listy parametrów na koniec metody, dzięki czemu wskaźniki mogą być również używane na liście parametrów:

unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

Możesz również użyć niebezpiecznego bloku, aby umożliwić korzystanie z niebezpiecznego kodu wewnątrz tego bloku. Na przykład:

unsafe
{
    // Unsafe context: can use pointers here.
}

Aby skompilować niebezpieczny kod, należy określić opcję kompilatora AllowUnsafeBlocks . Niebezpieczny kod nie jest weryfikowalny przez środowisko uruchomieniowe języka wspólnego.

Przykład

// 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

specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Niebezpieczny kod w specyfikacji języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też