Pointer ve C#
Posted: September 15th, 2008 | Author: Ahmet Kakıcı | Filed under: Programlama, Yazılım | Tags: csharp, pointer, unsafe, visual studio | 5 Comments »C programlama dilini öğrenme aşamasında en çok dikkat edilecek noktalardan biri kuşkusuz pointer kavramıdır. Web programlama dillerinden C ve türevi dillere geçenlerin de en çok zorlandığı konu sanırım yine pointer konusudur.
Derleyicilerin kendi bileşenleri (component) çıkmaya başladığında bir nevi alt seviye kodlardan bizi uzaklaştırdı. Daha sonra Java ve .NET dillerinde hazır gelen kütüphaneler ile artık pointerdan bir hayli uzaklaşmış durumdayız. [ Bu konu hakkında Faruk Enes'in çok güzel bir yazısı var ] . Ancak bazı durumlar oluyor ki pointer kullanmadan işin içinden çıkmanın maliyeti oldukça yüksek oluyor.
Görüntü işleme ile uğraşmaya başladığımda C++ kullanıyordum ve pointerlar ile güzelce geçiniyordum. Ne zaman Visual Studio kullanmaya başlayıp C#’a geçiş yaptım işte o zaman pointer ile ilk sorunumu da yaşadım. .NET ile gelen GDI fonksiyonlarıyla resimlerden gerekli bilgileri alıp işimi yapabiliyordum ancak C++ ile yaptığımdan kat kat yavaş işlem yapıyordum.
Ve sonrasında bu yazıya konu olan şeyi buldum :) .NET pointer’lara güvenlikten dolayı [ belleği korumak için ] güvenmiyor ve kullanımını da kısmen yasaklıyordu. Ancak illa pointer kullanacağım diyen kişiler için de açık bir kapı bırakmış:
Visual studio’yu açtığınızda [genelde] sağda bulunan Solution Explorer’dan Properties’e çift tıklayarak açılan pencerede soldan ‘Build’i seçin. Açılan sayfada ise ‘Allow unsafe code’ kutucuğuna bir tik attı mı bu iş bitiyor.
Bundan sonra aşağıdaki gibi unsafe kod bloğu içinde pointer kullanabilirsiniz.
unsafe
{
// pointer kullanabileceğiniz bölge.
}
Benzer yazılar:





Selam Ahmet,
Güzel bir yazı yazıp pointer nasıl kullanılabileceğine dair bilgi vermissin. Pointer kavramını hiç bilmeyen bir kişi nelere dikkat etmeli olduğunu da yazarsan daha faydalı olacağı kanısındayım.
Pointer kavranımı hiç bilmeyenler için nelere dikkat edilmeli gibi bir yazı blog yazısından çok bir makale konusu olur :)
İnternette dediğin tür yazılardan fazlasıyla var [bkz.google] , benim bu yazıyı yazma sebebim bizzat yaşamış ve çözümü bulmakta zorlanmış olmam [ o ara internetten uzaktım :)]
[...] pointer kullanarak çalışıyor. C# ile nasıl pointer kullanacağınızı bilmyiorsanız şurada bulunan yazımı [...]
C , C++ a ne kadar çok kullanırdık… C# da ihtiyacım olmadı , hiç araştırıp kullanmamıştım. Teşekkürler bilgi için.. Belki dediğiniz gibi performans açısından baya bir iyileştirme sağlıyordur. Araştırması gerekilen bir konu..
Alp eğer görüntü işlemeye bulaşırsan aradaki farkı görürsün. PictureBox üzerinde yapılan işlemlere göre onlarca kat daha hızlı oluyor ;)