home
15 Sep 2008 - By Ahmet Kakıcı

Pointer ve C#

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.
}

            
		


    

    
post tags: csharppointerunsafevisual studio