Bugün basit bir örnekle unsafe yapısının kullanımını anlatacağım. Bu c sharp programında 3 adet sayı tanımlayacağız ve bu 3 sayının adres bilgisini, yani bellekte tutulduğu yeri ekrana yazdıracağız. Ve bu adreslerin sonlarındaki rakamlar arasında 4 fark olduğunu göreceksiniz,bunun nedenini sonradan açıklayacağım.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace bolubeyi
{
class Program
{
class myclass
{
public unsafe void metot()
{
int x = 20;
int y = 10;
int z = 30;
int* ptr1 = &x;
int* ptr2 = &y;
int* ptr3 = &z;
Console.WriteLine(“{0:x}”,(int)ptr1);
Console.WriteLine(“{0:x}”,(int)ptr2);
Console.WriteLine(“{0:x}”,(int)ptr3);
}
}
class uygulama
{
public static void Main()
{
myclass mc = new myclass();
mc.metot();
}
}
}
}
Ekran çıktısı:
15ee40
15ee44
15ee48
Class yapılarını kullandığımız için Main fonksiyonumuz içerisinde “myclass mc = new myclass();” adında bir class tanımlayarak mc.metot() fonksiyonuna yolladık. Burada unsafe void metot adında fonksiyon oluşturduk ve 3 sayı tanımladık x,y,z şeklinde. Bu sayıları da rastgele değerler verdik. Adreslerini tutmaları içinde pointer kullandık ptr adında. Daha sonra bunları ekrana yazdırdık. Ekran çıktısının yukarıdaki gibi olması zorunlu değil, çünkü programı her çalıştırdığınızda bellekte başka bir yere kaydedecektir. Ama yukarıda da dediğim gibi son rakamlar arasında 4 fark olması gerekmektedir. Çünkü biz sayılarımızı integer tanımladık ve integerlar 4 bitlik yer kapladıkları için her sayı eklediğimizde bellekte 4 farkla yer kaplayacaktır. Unsafe yapısını şu şekilde de kullanabilirdik:
public void metot()
unsafe
{
int x = 20;
int y = 10;
int z = 30;
int* ptr1 = &x;
int* ptr2 = &y;
int* ptr3 = &z;
Console.WriteLine(“{0:x}”,(int)ptr1);
Console.WriteLine(“{0:x}”,(int)ptr2);
Console.WriteLine(“{0:x}”,(int)ptr3);
}
Burada da unsafe için ayrı bir parantez açıp kapattık. Diğer yaptığımız işlemler gördüğünüz gibi aynı. Tekrar görüşmek üzere…
Bolubeyi burada bir ekleme yapmam lazım, aksi halde program "unsafe code may only appear if compiling with /unsafe" hatası verecektir. Solution Explorer penceresinde projenize sağ tıklayarak Properties sekmesine tıklayın. Daha sonra karşınıza çıkan pencerede Build menüsüne gelin. Orada Allow Unsafe Code seçeneğini aktif hale getirerek projelerinizde unsafe komutunu kullanın.
Tamamen unutmuştum onu,sağ ol furkan:)
önemli değil bolubeyi herzaman yardımcı oluruz