C# 'ta object olarak adlandırılan özel bir sınıf tanımlıdır. object, tüm diğer sınıflar ve tüm diğer tipler (değer tipleri de dahil olmak üzere) için kapalı bir temel sınıf görevi görür. Bir başkadeyişle, tüm diğer tipler object'ten türetilir. Bu, object tipindeki bir referans değişkenin diğer herhangi tipteki bir nesneye referansta bulunabilmesi anlamına gelir. Ayrıca, diziler de sınıf olarak gerçeklendikleri için, object tipindeki bir değişken herhangi bir diziye de referansta bulunabilir. Teknik olarak, C#'taki object ismi aslında .NET Framework sınıf kütüphanesinin bir parçası olan System.Object için verilen bir başka isimdir. object sınıfı aşağıdaki tabloda gösterilen metotları tanımlar. Yani, bu metotlar her nesne için kullanıma hazırdır.
Bu metotlardan bazıları biraz daha açıklamak gerekli. Equals(object) metodu, kendisini çağıran nesnenin, ona aktarılan argümanla aynı nesneye referansta bulunup bulunmadığını saptar. (Bir başka ifade ile, iki referansın aynı olup olmadığını kontrol eder.) Bu metodu kendi oluşturduğunuz sınıflarda devre dışı bırakabilirsiniz. Bu sayede, "eşitliğin" bir sınıfta ne anlama geldiğini kendinize göre tanımlama olanağı bulursunuz.
Örneğin, Equals(object, object) metodu, sonucu hesaplamak için Equals(object)'i kullanır.
GetHashCode() metodu , .ağıran nesneyle ilişkili "hash" koduna döndürür. Bu kod, depolanmış nesnelere erişmek çin "hashing" yönteminden herhangi
bir algoritma tarafından kullanılabilir.
Not: == operatörünü aşırı yüklerseniz, Equals(object) ve GetHashCode()'u devre dışı bırakmanız gerekir. Çünkü çoğu zaman == operatörü ile Equals(object)'in aynı sonucu vermesini isteyeceksinizdir. Equals() devre dışı bırakıldığında iki metodun uyumlu olabilmesi için GetHashCode()'un da devre dışı bırakılması gerekir.
ToString() metodu, üzerinden çağrıldığı nesnenin tanımını içren bir karakter katarı döndürür. Bu metot aynı zamanda, bir nesne WriteLine() ile yazıldığında da otomatik olrak çağrılır. Pek çok sınıf, bu metodu devre dışı bırakır. Bu sayede, bir sınıfı, oluşturdukları nesne tiplerine spesifik olark uydurma olanağı bulurlar. Örneğin:
// ToString'i tanitir.
using System;
class MyClass {
static int count=0;
int id;
public MyClass() {
id=count;
count++;
}
public override string ToString() {
return "MyClass object #" + id;
}
}
class Test {
public static void Main() {
MyClass ob1=new MyClass();
MyClass ob2=new MyClass();
MyClass ob3=new MyClass();
Console.WriteLine(ob1);
Console.WriteLine(ob2);
Console.WriteLine(ob3);
}
}
Çıktı:
MyClass object #0
MyClass object #1
MyClass object #2
Kaynak: Herbert Schildt
Herkes için C#
Hiç yorum yok:
Yorum Gönder