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