21 Mayıs 2016 Cumartesi

TUPLE NEDİR?

     Herkese merhaba, bu yazımızda C# "Tuple" kavramına değineceğiz. Tuple aslında F# dilinde kullanılan ama daha sonra C# dilinde de desteklenen veri türüdür. Normalde herhangi bir veri tipi tanımladığımızda ( List, Array vs) o tanımlanan veri tipi neyse, elemanlarımızın da o veri tipinden olması gerekmektedir. Peki tanımladığımız bir veri tipinin içeriklerinin farklı türlerde olmasını istediğimiz hiç olmuyor mu? Elbette oluyor ki aslında biz bunları "Anonymous" veri tipleri ile halledebiliyorduk. Fakat "Tuple" sınıfı ile tanıştıktan sonra bu işlemleri daha zahmetsiz bir şekilde çözebilecek seviyeye geliyoruz.  
     Tuple sınıfını farklı türlerin bir araya geldiği yapı olarak nitelendirebiliriz. Aslında kısacası her çeşit çiçeğin bir arada bulunduğu demet olarak düşünebilirsiniz. Tuple tanımlaması ve içerisindeki verilere erişim aşağıdaki 2 şekilde yapılabilmektedir.

 1 - 






 2 - 






   İlk olarak direk klasik nesne tanımlama yöntemiyle, ikinci olarak da Tuple sınıfı içerisinde static olarka yer alan Create metodu ile yapılabilmektedir. İçerisindeki nesnelere erişim ise Item1,Item2,...,Item8 şekline 8 parametreye kadar gidebilmektedir. Tuple sınıfının create metodunu incelediğimizde aşağıda da görüleceği gibi T1,T2...,T7,Tuple<T8> şekilnde maksimum 8 tane parametre alabileceği görülmektedir.









Bu durumda 8 farklı tipte parametre tanımlanabilirken, son parametrenin de bir Tuple olması aslında sınırsız sayıda veri tanımlayabilmemize olanak vermektedir. Object browser ile .NET Framework 4.0 ve yukarısına baktığımızda da aşağıdaki gibi 8. parametrenin "TRest" olarak tanımlandığı görülebilir.
















Tuple sınıfının her bir elemanı herhangi bir tip olabileceği gibi, bir Tuple da olabilir. Bu şartlar altında istediğimiz kadar parametre vermiş olabiliyoruz. Burada belirtmek istediğim bir durum var , son elemanın yani 8. elemanın kesinlikle Tuple tipli olması gerektiği ve bu elemana "Rest" referansı ile ulaşabileceğimiz konusudur. Aksi halde aşağıdaki hatayla karşılaşılacaktır.


Son elemanı Tuple olarak tanımlarsak;








Peki Tuple nesnesinin herhangi bir elemanı da Tuple olursa erişim nasıl olur derseniz, aşağıdaki örneği inceleyebilirsiniz.



Peki Tuple Hangi Senaryolarda Kullanılabilir ?

1 - Birden farklı veri tipi tanımlayıp, bunları bir arada tutmak istersek













2 - Metodlardan birden fazla değer return etmek istersek ( Out Parametresi ile de olabilir)












3 -  Sadece tek 1 parametre göndermek zorunda kaldığımız durumlarda. Thread yapıları buna en güzel örnektir, eğer parametreli kullanacaksak sadece 1 parametre göndermek zorunda oluğumuz yapılardır. Bu yapıları Tuple kullanarak birden fazla parametre gönderilir hale getirebiliriz.


Hiç yorum yok:

Yorum Gönder