System.Object.ToString

// 15 Mayıs 2009 // .Net, Delphi, Programlama

Delphi tanımı :

function ToString : String; virtual;

C# tanımı :

public virtual string ToString();

Mevcut sınıf ile alakalı bilgi döndürmek amacı ile kullanılmaktadır. .Net ortamında kullanılan herşey bir nesne olduğundan mevcut tüm sınıflarda ve işin ilginç ve yararlı tarafı değişkenler de de bu metodu kullanabilirsiniz. (Gerçi pek çok değişken tipi class değil record olarak tanımlanmıştır ama şimdilik bu konumuz değil oralarada geleceğiz). Peki bu varsayılan tutumu değiştiremezmiyiz dediğinizi duyar gibiyim ? Çoğu zaman sınıfın adının metin olarak döndürülmesi (“System.Object” gibi) pek anlamlı ve yararlı olmayacaktır bizler adına.Biz belli bir sınıfı miras alan kendi sınıflarımızda sınıfımıza ait bazı özel bilgileri bu metod ile döndürmek isteyebiliriz.Örnekleri çeşitlendirmek mümkün..İhtiyacınıza göre değişecektir. Peki bunu nasıl yapacağız.? Şimdi System.Object sınıfının ToString metod tanımına bir göz atalım birlikte. ToString metodu tüm nesnelerin atası olan System.Object sınıfında virtual anahtar kelimesi ile işaretlenmiştir. Bunun anlamı, bu metodun istenildiği taktirde herhangi bir sınıfta tekrar tanımlanabilmesine (override) imkan tanımaktır. Şimdi biz bunun Delphi’cesini yapacağız. C# programcıları bize kızmasınlar lütfen, C# syntax’ini Delphi kadar bilmediğim için bu dille yapmayacağım örneklerimi.Zaten burasıda bir Delphi Blog’u ;)

Şimdi System.Object sınıfından miras alan bir sınıfımız olsun.

TMyClass = class(System.Object)
public
    function ToString : String; override;
end;

function TMyClass.ToString : String;
begin
    Result := ‘TmyClass sınıfını kullanıyoruz.!’;
end;

Örnekte görüldüğü üzere System.Object’i miras alan bir sınıfımız var ve bu sınıf ToString fonksiyonunu eziyor(override) ve yeni bir kullanım sunuyor.Peki varsayılan mesajı da almak istersek nasıl yapacağız ? Hemen örneğimizde küçük bir değişiklik yapalım.

function TMyClass.ToString : String;
begin
    Result := inherited ToString + ‘-TmyClass sınıfını kullanıyoruz.!’;
end;

Buradaki kullanımda ki tek farklılık inherited ToString çağrısı. Bu bir üst nesnenin ToString metodunu çağıracaktır.Bir üst nesnemiz olan System.Object’in ToString çağrısından dönen metinsel değerine kendi açıklamamızı da ekliyoruz ve geri döndürüyoruz.

Not: Örnekler Delphi 2006 + VCL.Net ile yapılmıştır.

Saygılar, sevgiler..

Yorum Yazın