Object türü
Bütün türlere karşılık gelen bir türdür. Bütün türler object'ten türerler yani object bütün türleri kapsar. Object referans türlü bir değişkendir. Object türü değişkenler verileri bellekte object türünde tutarlar ama içlerinde tutuğu verilerin orijinal türlerini de saklarlar. Daha sonra bu verileri kendi türünden Unboxing yardımı ile elde edebiliriz. Object türü değişkenler genelde gelecek verinin türünün bilinmediği durumlarda kullanılır.Boxing
Herhangi bir değer türü değişkeni referans türü olan object türündeki başka değişkene atama(gönderme/dönüştürme/içine yerleştirme) işlemine boxing denir.
C#:
static void Main(string[] args)
{
int k = 333;
object box;
box = k;
Console.WriteLine(k);
Console.WriteLine(box);
Console.ReadKey();
}
Burada int türündeki k değişkenini object türündeki box değişkenine atadık. İşte bu işleme Boxing denmektedir.
int türünden object türünü dönüşen 333 sayısı artık int türünden olmadığı için çarpma işlemi gibi int türüne ait işlemleri gerçekleştiremez. Eğer kendi türüne ait işlemleri gerçekleştirmek istersek object türü değişkene Unboxing işlemi yapmamız gerekmektedir.
Cast operatörü
Object türündeki herhangi bir veriyi kendi türüne dönüştürmek için kullanılan bir operatördür.
Kod:
(DönüşecekTürAdı)ObjeAdı
Şeklinde kullanılır. Burada
() cast
operatörü diyebiliriz.
C#:
int a = 2;
object c = a;
Console.WriteLine((int)c * 5);
Console.WriteLine((int)c * 5);
satırında c object'ini int türünde unboxing ederek int türünün özelliği olan çarpma işlemini sorunsuzca kullandık.Unboxing
Referans türü olan Object türündeki bir değişkeni değer türü bir değişkene dönüştürmek için unboxing işlemini kullanılırız.
C#:
static void Main(string[] args)
{
int k;
object box = 44;
k = (int)box;
Console.WriteLine(k + 2);
}
Yukarıda object türündeki box değişkenine toplama işlemi yapabilmek için
k = (int)box;
şeklinde unboxing işlemi gerçekleştirdik.Unboxing ederken Object türüne aktarılmış değişkenin orijinal türü ile unboxing işlemi gerçekleştirmeliyiz. Aksi taktirde run time esnasında hata alırsınız.
Var Keywordü
Kısaca oluşturduğunuz değişkenin türünün verdiğiniz değişken değerine göre otomatik olarak belirlenmesini istiyorsanız var keywordünü kullanırsınız.
C#:
var sayi = 3;
Bu örnekte gördüğünüz gibi var keywordü sayi değişkeninin otomatik olarak int türünde olmasını sağladı.
Asıl kullanım nedeni diller arasındaki entegrasyonda kullanılmasıdır. var keywordü ile tanımlanan değişkenlerin değeri tanımlanma esnasında verilmedir.
dynamic keyword
Yapı olarak var keywordüne benzemektedir yani dynamic keywordü ile bir değişkeni tanımladığımızda türü otomatik olarak belirlenmektedir. Var ile fakları ise var keywordü ile tanımlanan değişken derleme aşamasında türü belirlenirken, dynamic keywordü ile tanımlanan değişken runtime da türü otomatik olarak belirlenir.Dynamic tanımladığın bir değişkeni var'In aksine daha sonradan başka türde bir değişken atayabilirsin.
C#:
dynamic x = 2;
Console.WriteLine(x);
x = "Osman";
Console.WriteLine(x);
Çıktı:
Kod:
2
Osman
Yukarıda gördüğünüz gibi dynamic olarak tanımladığımız bir değişkenin runtime içeresinde başka türde bir değişken atayabiliyoruz.
Asıl kullanım amacı dışarıdan türünü bilmediğimiz verilerin bir değişkende tutulmasını sağlamaktır.