cgrszone: pardon.
Ben Kenobi:
Vermiş oluğun örnekten,
structın
safe mi
unsafe mi olduğunu anlayamadım.
Fixed deyince bi' durdum.
Kabaca,
safe için .NET FrameWork'ün
dışına taşmayan fakat
unsafe için .NET FrameWork'ün
dışına taşan yapılar diyebiliriz.
- Fixed,
unsafe yapılarda kullanılır.
- Unsafe yapılar da genellikle
thread içerisinde kullanılır. (
Thread herhangi bir amaç için kullanılabilir.)
- Unsafe gözönüne alınırsa,
unmanaged kodlar ile haberleşmek isteyen
threadlerden söz edebiliriz.
Bu durumda da, .NET'i hedef almayan yazılımdan bahsetmemiz gerekir. Böyle bir yazılımla (genellikle donanım kontrol eden) veri alışverişinde bulunmak istiyorsan, yapıya dikkat etmen gerekir.
.NET FrameWork'te GC (GarbageCollector) sistemi var. GC, Safe (managed) kodların kapladığı alanı canı istediğinde boşaltabiliyor. Bu nedenle, gelecek olan verinin depolanacağı alanı korumak için de yapı unsafe olarak tasarlanıyor. Böylece GC o yapıya dokunmuyor ve veri sağlam olarak ulaşıyor.
Safe yapı içerisinde çalışıyorsan, bahsettiğim şekilde kullanmanı tavsiye ederim. Unsafe yapı içerisindeysen, duruma göre, fixed bir çözüm olabilir.