C#, nesne yönelimli bir dil olduğu için geliştirdiğimiz tüm programlar nesneler ve sınıflar içerir.
Object, .NET Framework içerisinde tanımlı bir sınıftır ve .NET'in ilk geliştirildiği versiyondan beri varlığını korumaktadır. Daha da önemlisi, .NET'te aslında bildiğimiz her şey Object sınıfından türemiştir. Dolayısıyla tüm sınıfların en üstünde yer alır ve .NET'te yer alan her şey aslında bir object'tir.
Bir object nesnesinin tipini öğrenebilmek için GetType metodunu kullanabiliriz.
Object obje = new object();
System.Console.WriteLine(obje.GetType()); //System.Object
Şimdi benzer bir örnek daha yapalım, ama tek bir satır kod daha ekleyelim ve neler değişiyor bakalım.
Object obje = new object();
obje = 5;
System.Console.WriteLine(obje.GetType()); //System.Int32
O zaman object sınıfından doğrudan ürettiğimiz nesneler istediğimiz her şekle geliyorsa neden o kadar çok değişken türü seçmek ile uğraşıyoruz? Bu sorunun yanıtı için de üstteki koda bir satırlık basit bir işlem ekleyelim.
Object obje = new object();
obje = 5;
System.Console.WriteLine(obje.GetType()); //System.Int32
obje++; //Hata
Hata mesajı: Operator '++' cannot be applied to operand of type 'object'
Not: Object bir nesne içerisinde saklanan bir değer Boxing işlemine tabi tutulur, dolayısıyla o değeri veri tipi ile birlikte (örneğin int için toplama gibi) bir işleme tabi tutabilmek için Unboxing işlemi uyglanmalıdır.
Kodumuzu aşağıdaki gibi düzenlediğimizde işlem hatasız olarak tamamlanacaktır.
Object obje = new object();
int sayi = 5;
obje = sayi; //Boxing
sayi = (int)obje; //Unboxing
System.Console.WriteLine(sayi); //5
Önceki yazılarımdan bazıları için;
bkz: C# ile pürüzlü dizi (jagged array) kullanımı
bkz: C# Sınıf ve Nesne Nedir?
bkz: C# Kurucu (Constructor) Nedir?
bkz: C# Özellik (Property) Nedir?
bkz: C# ile Medyan (Ortanca Değer) Bulmak
bkz: C# ile String'in son karakterini silmek ya da değiştirmek