C# 7.0 – Deconstruct Metodu
Merhaba,
Son zamanlarda her ne kadar C# 8.0 versiyonu özelliklerine odaklanmış olsakta 7.0 versiyonunda ele almadığım güzel bir manevra sağlayan Deconstruct özelliğini kısaca sizlerle tanıştırıp, esas güncel konularımızdan yazı akışımıza devam etmek istiyorum.
Deconstruct Metodu Nedir? Ne İşlev Görür?
Bir sınıf içerisinde “Deconstruct” ismiyle tanımlanan metot, compiler tarafından özel olarak algılanmakta ve sınıfın nesnesi üzerinden geriye hızlıca Tuple tipte bir değer döndürmemizi sağlamaktadır.
Kullanımı şöyledir;
class Ogrenci { public string Adi { get; set; } public string Soyadi { get; set; } public int Yas { get; set; } public void Deconstruct(out string adi, out string soyadi) { adi = Adi; soyadi = Soyadi; } }
Yukarıdaki kod bloğunu incelerseniz eğer “Ogrenci” sınıfı içerisinde tanımlanmış olan Deconstruct isimli fonksiyon geriye bir değer döndürmemekte lakin içerisinde out tipte parametreler almaktadır. Bu parametreler metot içerisinde dışarıya Tuple olarak gönderilecek olan nesnenin değerlerini karşılamaktadırlar. Compiler ilgili metodun özel olduğunu isminden algılayacaktır ve ilgili sınıftan oluşturulan nesneler üzerinde aşağıdaki işlemi yapmamıza olanak tanıyacaktır.
Ogrenci o1 = new Ogrenci() { Adi = "Gençay", Soyadi = "Yıldız", Yas = 35 }; var (ad, soyad) = o1;
Yukarıdaki kod bloğunda oluşturulan “Ogrenci” nesnesini refere eden “o1” referansını Deconstruct kullanılacak şekilde çağırmakta ve out keywordü ile dışarıya gönderilen değerleri görüldüğü gibi Tuple olarak döndürecek şekilde karşılamaktayız.
Ya da,
var (ad, soyad) = new Ogrenci() { Adi = "Gençay", Soyadi = "Yıldız", Yas = 35 };
şeklinde de bir kullanım söz konusu olabilir. Nihayetinde yine bir “Ogrenci” nesnesi Tuple karşılığı olacak şekilde talep edilmektedir.
Yukarıdaki her iki kullanımda da sağlıklı bir şekilde kodumuzun derlenebilmesi için nesnesi alınan ilgili sınıfın içerisinde Deconstruct isimli metot tanımlanmalı ve geriye döndürülecek değerleri out parametreler ile belirtilmelidir.
İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…