C# Eğitimleri – Veri Tipleri 10 – Object

C# Eğitimlerinde veri tiplerinde object tipine geldik.

Bir önceki yazım olan ve object tipi ile bir noktada aynı işlemi yapan var değişkenini anlattığım yazımı aşağıdaki linkten okuyabilirsiniz.

C# Eğitimleri 18 – Veri Tipleri 9 – Var

Object Tipi Nedir?

Object tipi C# da değişken tipini belirtmek zorunda olmadan kullandığımız tüm veri tiplerini içinde barındırabilecek bir veri tipidir.

Object Tanımlama

Object Vs Var

Var eğitim yazımızı okuduysanız aklınıza gelebilecek sorulardan biri şudur. Bu kullanım haliyle var a çok benziyor neden object türüne ihtiyaç duyulmuş nedir farkları?

  1. si var tipli bir değişken tanımladığımızda buna ilk değer vermeden tanımlama yapamıyorduk.

Ama object tipine ilk atama yapmadan değişken tanımlaması yapabilirsiniz.

Herhangi bir hataya sebebiyet vermeyecektir. Sadece herhangi bir tipin deklere edilmediği ve bu değişkenin henüz hiç kullanılmadığı uyarısını alırsınız.

Ancak böyle bir durumda herhangi bir atama yapılmadığı için verilen değişkenin tipini öğrenmek için GetType() metodun çağırsaydık hata alacaktık.

 

2. Fark ise şudur. Var tipli bir değişkenin değeri Ram de Stack bölgesinde ve tipiyle ve değeriyle beraber tutulur bunu bir önceki yazımda şöyle göstermiştim.

Object tipli bir değişken ise Ram’in Heap bölgesinde object tipinde tutulur ve Stack alanda sadece bu değerin Heap deki adresi tutulur.

Bunun sağladığı en büyük güzelliklerden biri Ram’in stack alanında en başta türden gelecek boyut kadar yer ayırmaz. Gelen değer sonrasında unboxing yapıldıktan sonraki türün boyutu kadar yer anlık olarak oluşturulur. Ram’in optimizasyonu için önemli bir olaydır.

Boxing & Unboxing

Şimdi yeni bir kavramı öğreneceğiz.

Object tipli bir değişkenin tanımlanması ve ilk değerinin atanması anında olan olay Boxing(Kutulama) olayıdır. Yani ne demek istiyoruz?

object Sayi=1;

Normalde int tipli olan Sayi değişkeni object türü ile tanımlandığı anda türü tekrar kutu açılana kadar object olacak şekilde ayarlanır. Bu işlem Boxing olayıdır.

Object tipine gönderdiğimiz tipi kullanabilmemiz için mutlaka unboxing işlemi yapılmalıdır.

Örneğin ilk başta Object Sayi=0; değişkenini tanımlayıp daha sonra int tipli Sayi2 ye Sayi değişkenini atama işlemini yapalım.

Aynı işlemi birde string için yapalım.

 

3. Bir diğer özellik ise şudur. Var tipli bir değişkene ilk atama yaptığınız anda o değişkene ilk hangi tür atamayı yaptı iseniz program boyunca o tipte davranacaktır. Farklı bir tip set etmeye çalışırsanız hataya neden olacaktır.

Ama object tipinde böyle bir sınırlama yoktur programın her anında değişkene istediğiniz tipte değer ataması yapabilirsiniz.

 

Burada tek dikkat etmeniz gereken şey kullanabilmek için Unboxing yapmanız gerektiği için o anki tuttuğu tipi bilmeniz gerektiğidir.

Bunun içinde GetType() Metodunu kullanabilirsiniz.

GetType() Kullanımı

Object tipli bir değişkenin o anda tuttuğu değişken değerini bilmek için GetType() Metodu kullanılır.

 

 

Bu şekilde Object tipini de detaylı bir şekilde öğrenmiş olduk. Bir sonraki yazımda bir performans değerlendirmesi daha yapacağız. Bu sefer normal tipli değişken var ve object tipinin hız testini yapacağız.

Görüşmek dileğiyle.

 

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Murat Bilginer

Industryolog Akademi Founder – Endüstri Mühendisi
Canias ERP Troia Geliştiricisi & Yazılım Uzmanı
7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

http://muratbilginer.net/