C# Console Uygulamaları

C# Object Class

Object Sınıfı Nedir?

Bu yazımızda .NET Framework sınıflarının temel olarak kalıttığı ilk sınıf olan “object” sınıfını daha yakından inceleyeceğiz.
Tüm sınıfların temel aldığı .NET çatısının en tepesinde bulunan sınıfıdır. Bu tanımdan yola çıkarsak belkide Object sınıfının aslında herşey olduğunu kısaca “Object is Everthing” diyebiliriz. Bir nesnenin başlangıcıdır. Kalıtım (inheritance) yoluyla tüm sınıflarda Object sınıfına ait izler görebilirsiniz.

Object sınıfın sahip olduğu 5 farklı metoda sahiptir.

  • GetType
  • Equals
  • ReferenceEquals
  • ToString
  • GetHashCode

Object sınıfı metodları

Metod Açıklama
GetType Nesnenin veri türünü döndürür.
Equals İki nesne örneği arasında karşılaştırma yapar. Aynı nesneler karşılaştırıldığında true aksi halde false döndürür.
ReferenceEquals İki nesne örneği arasında karşılaştırma yapar. Aynı referans adreslerine sahip nesneler karşılaştırıldığında true aksi halde false döndürür.
ToString Nesneyi string tipine dönüştürür.
GetHashCode Nesnenin hashcode bilgisini verir.

# .ToString()

Object değerini string türüne çevirir.

 

Sonuç ekranı;

# .ToString() Metodunu Override Etmek

.NET içerisinde public virtual string ToString(); olarak tanımlanmış olan .ToString() metodu her virtual metod gibi override edilebilir.

Isci sınıfını aşağıdaki şekilde düzenleyiniz.

Isci.cs

override edilen ToString() metodu böylelikle yeni bir davranışa sahip olmaktadır.

Sonuç;

# Equals() Method

Karşılaştırılan iki nesnenin aynı referansta olup olmadığını döndürür.

public virtual bool Equals(object obj);

Örnek:

uygulama kodlarında son olarak isci1 ve isci2 nesneleri birbirine eşitlenmiş durumdadır. Referans türlerinde bu eşitlik sonucu her iki nesne aynı heap bellek bölgesini işaret edecektir. Kısaca nesneler birbirinin aynısıdır. Equals() metodu bu nesneler için “true” değerini döndürür.

Aşağıdaki senaryoda ise “ISci” tipinde isci3 ve isci4 nesneleri her ne kadar aynı durumlara (state) yada aynı özellik değerlerine sahip olsalarda farklı heap bellek bölgelerinde tutulduklarından “equals()” metodu bu iki nesne için false değerini döndürür.

 

# Equals Metodunu Override Etmek

Equals() metodunu biraz farklı yorumlayalım. Söz konusu nesnelerimizin referans eşitliğinden ziyade, nesnelerin eşit olup olmadıklarını değerlerine bakılarak yapılabilmesini sağlayalım. Bu durumda “Employee” sınıfında “Equals()” metodunu override ederek farklı davranışa göre programlayalım.

Sınıfları aşağıdaki gibi düzenleyiniz.

Employee.cs

Program.cs

Sonuç olarak “Equals()” metodu “True” değerini döndürür.

# GetHashCode() Method

Nesnenin referans bilgisini sayısal bilgi olarak verir.

public virtual int GetHashCode();

Farklı iki nesnenin sahip olduğu hashcode aşağıdaki örnekte gösterilmiştir.

 

Ancak nesneler birbirine eşitlendiğinde sahip olduğu hashcode birbirine eşit olur. Örneğin;

# GetType()

Objenin tür bilgisini verir.

public Type GetType();

Örneklerimizde kullandığımız “isci” nesnelerinin türünü çalışma zamanında öğrenmek istersek;

Çalışma Örneği:

Örneğimizde iki boyutlu bir noktanın sınıf tasarımını gerçekleştirelim.

Nokta.cs

Program.cs

Program çıktısı aşağıdaki sonucu verecektir. Sonuçlar açısından programı tekrar inceleyiniz.

 

Yorum Yap