24 Haziran 2017 Cumartesi

Tuple Sınıfı

Giriş
Tuple bir çok programlama dilinde olan bir yapı. Örneği C++'taki karşılığı std::tuple. Bu yapı bizi sınıf tanımlama zorunluluğundan kurtarır. Ancak ortada isimsiz yapılar dolaşabildiği için aynı zamanda işleri biraz da karıştırıyor. Bu yüzden pek sevmiyorum.

Tuple Reference Type dışında C# 7 ile Value Tuple kavramı da geldi.

Tuple Ne Zaman Kullanılır
Açıklaması şöyle. Veriyi bir katmandan başka katmana aktarırken ve veriyi taşına sınıf önemsizse ve  kullandıktan sonra unutulacaksa tercih edilir.
Anonymous types and tuples are used when there is no design significance and all you want is a lightweight Data Transfer Object (DTO) to move information around.
Örnek
Taşıma işlemini yapan Tuple sınıfının ismi dahi olmadığını ve hemen unutulduğunu görmek için şöyle yaparız.
Tuple<int, string> Foo()
{
  ...
  return Tuple.Create(7, "Done.");
}
var result = Foo(); 
var err = result.Item1;
var response = result.Item2;
Tuple Immutable'dır
Tuple sınıfı immutable bir sınıftır. Yani setter metodu yoktur. Şu kod "The property has no setter" hatasını verir.
Tuple<int, string>  tuple = ...;
tuple.Item1 += 1;
Constructor
Şöyle yaparız.
new Tuple<string, string>("...", "...")
Create metodu
Örnek
Şöyle yaparız
Tuple<string, string>> t = Tuple.Create("...", "...");
Equals metodu
Tuple reference type olduğu için Object gibi çalışır. Elimizde iki tane farklı tuple nesnesi olsun.
Tuple<int,int> a = new Tuple<int, int>(5,5);
Tuple<int,int> b = new Tuple<int, int>(5,5);
Şöyle yaparız. True döner.
bool result = a.Equals (b);
Şöyle yaparız.
List<Tuple<int,int>> list = new List<Tuple<int, int>>() {a};

bool result = list.Contains (b); // returns true

Hiç yorum yok:

Yorum Gönder