İpucu - .ToString() vs nameof()
Program yazarken sık sık .ToString() metodundan faydalanırız. Fakat bu bizim için her zaman en hızlı seçenek olmayabiliyor.
Program yazarken sık sık .ToString() metodundan faydalanırız. Fakat bu bizim için her zaman en hızlı seçenek olmayabiliyor. Bu ipucu yazımda nameof() metodunu da kullanabileceğimiz duruma örnek vermek istiyorum. Detaya girmeden önce kısaca bu iki metodun ne işe yaradığına da değinmek istiyorum.
.ToString() Metodu
Bu metod, bir nesnenin string (metin) değerini almak için kullanılır. Herhangi bir C# nesnesinde çağrılabiliriz, çünkü Object sınıfından miras alınmıştır. Object sınıfı, C# dilindeki tüm sınıfların temel sınıfıdır. Dolayısıyla, tüm nesneler .ToString() metodunu varsayılan olarak içerir ve bu sayede kullanırız.
Avantajları:
ToString() metodunu ezerek (override), nesnenin string dönüş değerini değiştirebiliriz.
Loglama, hata mesajları veya kullanıcı arayüzü gibi birçok farklı durumda nesnelerin metin temsillerini kullanmak için idealdir.
Dezavantajları:
.ToString() çağrısı sırasında nesnenin türüne bağlı olarak farklı çıktılar üretilebilir ve bu durum bazen beklenmeyen sonuçlara yol açabilir.
Eğer bir nesne değeri atanmamış ise, yani kısaca null ise, .ToString() metodunu çağırmak NullReferenceException hatasına neden olabilir.
nameof() Metodu
Kullandığımız keyword’ün adını bir string olarak almanızı sağlar. Bu, genellikle hata mesajları, özellik isimleri veya enum kullanan durumlar için kullanılır.
Avantajları:
Kodunuzda değişiklik yaptığınızda, nameof() ile kullanılan isimler otomatik olarak güncellenir. Bu, hatalı string literallerini azaltır.
Kodun anlaşılabilirliğini ve bakımını kolaylaştırır. Hangi değişken veya özelliğin kullanıldığını açıkça gösterir.
Dezavantajları:
Sadece program elemanlarının adlarını almak için kullanılır. Genel bir string dönüşüm metodu değildir.
Bazı durumlarda, yalnızca elemanın adını almak, elemanın bağlamını veya önemini yeterince açıklamayabilir.
