nem biztonságos (C# referencia)
A unsafe
kulcsszó egy nem biztonságos környezetet jelöl, amely minden mutatót érintő művelethez szükséges. További információ: Nem biztonságos kód és mutatók.
A módosító egy unsafe
típus vagy tag deklarációjában használható. A típus vagy tag teljes szöveges terjedelme ezért nem biztonságos környezetnek minősül. A következők például a módosítóval unsafe
deklarált metódusok:
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
A nem biztonságos környezet hatóköre a paraméterlistától a metódus végéig terjed, így a mutatók a paraméterlistában is használhatók:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
A nem biztonságos blokkokkal is engedélyezheti a blokkon belüli nem biztonságos kód használatát. Példa:
unsafe
{
// Unsafe context: can use pointers here.
}
A nem biztonságos kód fordításához meg kell adnia az AllowUnsafeBlocks fordítóbeállítást. A nem biztonságos kódot a közös nyelvi futtatókörnyezet nem ellenőrzi.
Példa
// 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
C# nyelvspecifikáció
További információ: Nem biztonságos kód a C# nyelvi specifikációjában. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.