Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
Bir türün unsafe veya üyenin bildiriminde değiştiriciyi kullanın. Türün veya üyenin metinsel kapsamının tamamı güvenli olmayan bir bağlamdır. Örneğin, değiştirici ile unsafe aşağıdaki yöntem bildirilir:
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, parametre listesindeki işaretçileri de kullanabilirsiniz:
unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
Bu blok 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. Ortak dil çalışma zamanı güvenli olmayan kodu doğrulayamaz.
Note
C# 15'te kullanılabilen bellek güvenliği önizleme özelliği, bağlam unsafe gerektiren işlemleri daraltıyor.
artık unsafe bir işaretçi, deyim oluşturmak, bir fixed ifadeyi stackalloc işaretçiye dönüştürmek ve yönetilmeyen bir tür üzerinde kullanmak sizeof için bağlam gerekli değildir.
Yalnızca işaretçi dolaylı gibi işaret edilen belleğe erişen işlemler yine de bir unsafe bağlam gerektirir. Aynı önizleme, alan başlatıcı veya filtre gibi bir bloğun görünemeyen konumlar için tek bir unsafe ifade için güvenli olmayan bir bağlam oluşturan bir catch form da eklerunsafe(expression). Daha fazla bilgi için bkz. Güvenli olmayan ifadeler. Önizleme ayrıca bir üyedeki değiştiriciye unsafe yeni bir anlam verir: derleyici bunu üyeyi işaretlemek için güvenli olmayan bir işaret olarak tanır. Bu yükümlülüğün arayan tarafından uygulanması henüz uygulanmadığından, üyenin unsafe işaretlenmesi şu anda arayanları etkilememektedir. Daha fazla bilgi için bkz. Arayan-güvensiz üyeler.
Ö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# dil belirtimi
Daha fazla bilgi için bkz. C# Dil Belirtimi'ndekiGüvenli olmayan kod. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.