unsafe (C# Başvurusu)
anahtar unsafe sözcüğü, işaretçiler içeren herhangi bir işlem için gerekli olan güvenli olmayan bir bağlamı gösterir. Daha fazla bilgi için bkz. Güvenli Olmayan Kod ve İşaretçiler.
Değiştiriciyi unsafe bir tür veya üye 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, aşağıdaki yöntem değiştiricisi ile bildirilen unsafe bir yöntemdir:
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önteminin sonuna kadar genişler, bu nedenle 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 bir kod kullanımını etkinleştirmek için de güvenli olmayan bir blok kullanabilirsiniz. Örnek:
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ğrulanmaz.
Ö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 Belirtimsinde güvenli olmayan kod. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.