Tuple, bir değer kümesini tek bir birim olarak temsil etmenizi sağlayan C# 7.0 sürümü ile tanıtılan bir yapıdır. Tuples’ın tipi System.ValueTuple şeklindedir.
Tuple Oluşturma ve Erişim
Aşağıda, yeni bir tuple tipinin nasıl oluşturulacağı gösterilmektedir:
ValueTuple’ı oluşturmak ve erişmek kolaydır. Parantezler () kullanılarak ve içindeki değerler belirtilerek oluşturulabilir ve erişilebilir.
internal class Program
{
private static void Main(string[] args)
{
var person = ("Fatih Alkan", 36);
Console.WriteLine(person);
}
}
Sonuç:
(Fatih Alkan, 36)
Bu örnekte, iki alan (field) içeren person adlı bir tuple tanımlıyoruz. İlk alan, kişinin adını temsil eden bir string’tir ve ikinci alan, kişinin yaşını temsil eden bir int’dir.
Bir alana erişmek için aşağıda syntax yapısını kullanabilirsiniz.
tuple.field
Person tuple’ın alanlarının adı olmadığından, C# bunlara Item1, Item2 gibi varsayılan alan (field) adları atar. Örneğin:
var person = ("Fatih Alkan", 36);
Console.WriteLine($"Adı: {person.Item1}, Yaş: {person.Item2}");
Sonuç:
Adı: Fatih Alkan, Yaş: 36
Tuple alanlarına (fields) ad atamak için aşağıdaki syntax’ı kullanabilirsiniz:
var person = (Name: "Fatih Alkan", Age: 36);
Console.WriteLine($"Adı: {person.Name}, Yaş: {person.Age}");
Sonuç:
Adı: Fatih Alkan, Yaş: 36
Bu örnekte, Person tuple’ının alanlarına isimler atadık ve değerlerine alan (field) isimleri üzerinden eriştik.
Deconstructing Tuple Element
Deconstructing, tuple öğelerini birden fazla değişkene atamak anlamına gelir. Bunun için (=) operatörü kullanılır. Örneğin:
var point = (10, 20);
var (x,y) = point;
Console.WriteLine($"x: {x}, y: {y}");
Sonuç:
x:10, y:20
Bu örnekte, bir tuple’ın birinci ve ikinci öğelerini x ve y değişkenlerine atıyoruz. Bir tuple’ın yapısını çözerken değişken türlerini de açıkça belirtebilirsiniz:
var point = (10, 20);
(int x, int y) = point;
Console.WriteLine($"x: {x}, y: {y}");
Return Tuples
Tuple, bir metotdan birden çok değer döndürmek istediğinizde kullanışlıdır. Örneğin:
private static void Main(string[] args)
{
var result = Calculate(20, 30);
Console.WriteLine(result.sum); // sonuç: 50
Console.WriteLine(result.product); // sonuç: 600
}
static (int sum, int product) Calculate(int x, int y)
{
return (x + y, x * y);
}
Bu örnekte Calculate metodu, iki öğeli adlandırılmış bir tuple döndürür: sum ve product. Metodu çağırırken, döndürülen tuple’ı bir result değişkenine atayabilir ve nokta gösterimini kullanarak öğelerine erişebiliriz.
Şunun gibi bir metotla döndürülen tuple’ın yapısını çözebileceğinizi unutmayın:
private static void Main(string[] args)
{
var (sum,product) = Calculate(20, 30);
Console.WriteLine(sum); // sonuç: 50
Console.WriteLine(product); // sonuç: 600
}
static (int sum, int product) Calculate(int x, int y)
{
return (x + y, x * y);
}
Comparing Tuples (Karşılaştırma)
Tuple’lar == ve != operatörlerini destekler. İki tuple, aşağıdaki koşullara uyduklarında karşılaştırılabilir:
- Her iki tuple da aynı sayıda öğeye sahiptir.
- Karşılık gelen tuple öğeleri, == ve != operatörleri kullanılarak karşılaştırılabilir.
Örneğin, aşağıdaki örnek, öğe sayısı farklı olduğu için bir hatayla sonuçlanacaktır:
var point2D = (10,20);
var point3D = (10,20,30);
point2D == point3D; // ERROR
Aşağıdaki örnek, iki tuple’ın eşit olduğunu gösterir:
using static System.Console;
var point1 = (10,20,30);
var point2 = (10, 20,30);
var result = point1 == point2;
WriteLine($"Result:{result}");
Sonuç:
Result:True
System.ValueTuple ve System.Tuple
Şimdiye kadar System.ValueTuple tipine ait olan Tuple’ları öğrendiniz. System.Tuple türleri tarafından desteklenen tupler’dan tamamen farklıdırlar.
Aşağıdaki tabloda temel farklılıklar gösterilmektedir:
System.ValueTupe | System.Tuple |
Value Tuple value tiplidir. | Tuple referans tiplidir. |
Value Tuple değişkendir. | Tuple değişmez. |
Veri üyeleri alanlardır (fields). | Veri üyeleri özelliklerdir (property). |
- Bir değer kümesini tek bir değişken olarak temsil etmek için bir tuple kullanın.
- Kodunuzu daha okunaklı ve anlamlı hale getirmek için tuple kullanın.
System.Tuple yani referans tipli Tuple hakkında daha detaylı bilgi almak için aşağıda ki linkte bulunan makalemi okuyabilirsiniz.
Tuple Nedir?
https://alkanfatih.com/c-tuples-nedir/
One comment
Comments are closed.