unsafe (C# Başvurusu)
unsafe
anahtar sözcüğü, işaretçileri içeren herhangi bir işlem için gerekli olan güvenli olmayan bir bağlamı belirtir. Daha fazla bilgi için bkz . Güvenli Olmayan Kod ve İşaretçiler.
Değiştiriciyi unsafe
bir türün veya üyenin bildiriminde kullanabilirsiniz. Bu nedenle, türün veya üyenin metinsel kapsamının tamamı güvenli olmayan bir bağlam olarak kabul edilir. Örneğin, değiştirici ile unsafe
bildirilen bir yöntem aşağıda verilmiştir:
unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
// Unsafe context: can use pointers here.
}
Güvenli olmayan bağlamın kapsamı parametre listesinden yöntemin sonuna kadar uzandığından, işaretçiler parametre listesinde de kullanılabilir:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
Bu bloğun içinde güvenli olmayan kod kullanımını etkinleştirmek için güvenli olmayan bir blok da kullanabilirsiniz. Örneğin:
unsafe
{
// Unsafe context: can use pointers here.
}
Güvenli olmayan kodu derlemek için AllowUnsafeBlocks derleyici seçeneğini belirtmeniz gerekir. Güvenli olmayan kod, ortak dil çalışma zamanı tarafından doğrulanamaz.
Örnek
// 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# dili belirtimi
Daha fazla bilgi için bkz. C# Dil Belirtimi'ndeki Güvenli olmayan kod. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.