C# 7.0 Value Tuple ve Discard

C# 7.0 ile tanıştığımız Value Tuples özelliğine geçmeden önce .NET 4.0 ile gelen Tuple sınıfını kısaca hatırlayalım. Birden farklı tipte değeri ekstra bir sınıf tanımlamadan dönmemizi sağlayan Tuple sınıfını sıralı bir liste olarak düşünebiliriz.


Resim-1 : System.Tuple

Tuple’ın sıkıntılı olabilecek yönlerinden birisi class yani referans tipinde olması. Heap üzerinde allocate edildiğinden, yoğun CPU gerektiren operasyonlarda performans açısından kritik uygulamalar için sorun olabilir.

Bir diğer problem ise Resim-1‘de göreceğiniz üzere değerlerin belli bir isimle değil, Item1 ve Item2 şeklinde alınması, bu değerlerin tam olarak ne olduğunu ilk bakışta anlaşılmasını zorlaştırıyor.

Value Tuple’ı ise System.Tuple sınıfının (adından da anlaşılacağı gibi) değer tipli versiyonu olarak tanımlayabiliriz. Eğer NET Framework 4.7, ya da .NET Standard Library 2.0 kullanmıyorsanız NuGet’ten System.ValueTuple paketini (şu anda en güncel 4.4.0 versiyonu bulunuyor) kurmanız gerekecektir. Resim-2‘de göreceğiniz gibi Value Tuple ile sadeleştirilmiş bir kullanım ile birlikte, dönüş değerlerine de isimlendirerek kodumuzu da daha anlaşılır hale getirebiliyoruz.


Resim-2 : Value Tuple

GetTuple methodundan dönen değerleri yerel değişkenlere Resim-3‘te göreceğiniz gibi deconstruction yaparak atayabiliriz.


Resim-3 : Value Tuple deconstruction

GetTuple methodundan sadece intVal değerini kullanacağız ve strVal değerine ihtiyacımız olmadığı için bir değişken tanımı yapmak istemiyoruz. Bu durumda da _ keyword’ünü kullanarak Discard
özelliğinden faydalanabiliriz.


Resim-4 : Value Tuple Discard

Discard özelliğini sadece atama yapabildiğimiz ancak okuma yapamadığımız yerel değişken olarak düşünebilirsiniz.

Discard’ın bir başka kullanım ihtiyacına, Resim-5‘te göreceğiniz gibi TryParse methodlarının sadece sonucuyla ilgilendiğimiz durumları gösterebiliriz. Discard keyword’ü IntelliSense’de çıkmadığı gibi bir değişken gibi de kullanılamayacaktır.


Resim-5 : Discard

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://blogs.msdn.microsoft.com/mazhou/2017/05/26/c-7-series-part-1-value-tuples/

TAGs: Value Tuples nedir, Value Tuples kullanimi, Value Tuples, C#, C#7.0, ValueTuple, Tuple, Discard,Visual Studio

Yazı gezinmesi

Mobil sürümden çık