Udostępnij przez


niebezpieczne (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.

Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację dla funkcjonalności w publicznych wersjach testowych nadchodzącego wydania języka.

Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.

Wskazówka

Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.

unsafe Użyj modyfikatora w deklaracji typu lub elementu członkowskiego. Cały zakres tekstowy typu lub elementu członkowskiego jest niebezpiecznym kontekstem. 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ę od listy parametrów na koniec metody, dzięki czemu można również używać wskaźników 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. Przykład:

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

Aby skompilować niebezpieczny kod, należy określić opcję kompilatora AllowUnsafeBlocks . Środowisko uruchomieniowe języka wspólnego nie może zweryfikować niebezpiecznego kodu.

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 także