object bir genel veri tipi midir? [18]

object tüm diğer tiplerin temel sınıfı olduğu ve kutulama/kutudan çıkarma işlemleri değer tipleri için otomatik olarak işlendiği için, object'i genel bir veri tipi olarak kullanmak mümkündür. Örnek olarak, bir object dizisi oluşturan ve çeşitli diğer tiplerden verileri bu dizinin elemanlarına atayan aşağıdaki programı inceleyelim:

// Genel bir dizi olusturmak icin object'in kullanimi
using System;

class GenericDemo {
public static void Main() {
object[] ga=new object[10];
//int'leri depola
for(int i=0; i<3; i++)
ga[i]=i;
//double'lari depola
for(int i=3; i<6; i++)
ga[i]=(double)i/2;
//iki string, bir bool bir de char depola
ga[6]="Generic Array";
ga[7]=true;
ga[8]='X';
ga[9]="end";
for(int i=0; i<10; i++)
Console.WriteLine("ga[" + i + "]: " + ga[i] + " ");
}
}

Çıktı:

ga[0]: 0
ga[1]: 1
ga[2]: 2
ga[3]: 1.5
ga[4]: 2.
ga[5]: 2.5
ga[6]: Generic Array
ga[7]: True
ga[8]: X
ga[9]: end

Bu programdan görüldüğü üzere, bir object referansını herhangi bir veri tipine referansta bulunmak için kullanmak mümkündür. Dolayısıyla, bu programın kulladığı türden bir object dizisine herhangi bir veri türünden değer atanabilir. Bu, object dizisinin esasen genel bir liste olduğu anlamına gelir. Kavramı genişletirsek, örneğin, object referanslarının tutulduğu bir yığın sınıfı oluşturmanın ne kadar kolay olduğu anlaşılır. Bu sayede yığında her türlü veri tipinden eleman tutulabilir.
object'in genel veri tipi olması gülü bir özelliktir ve bazı durumlarda gayet etkin biçimde kullanılabilir. Ancak object'i C#'ın diğer durumlarda güçlü olan tip kontrollerini aşmanın bir yolu olarak görmek hata olur. Genel olarak, bir int tutmanız gerekiyorsa, bir int değişkeni kullanın. Karakter katarı depolamak için bir strin referansından yararlanın. Object'in genel olma niteliği sadece özel durumlarda kullanın.

Kaynak: Herbert Schildt
Herkes İçin C#

Hiç yorum yok:

Yorum Gönder