احد احدث الأنواع التي تم اضافتها للدوت نت 4 هو نوع Tuple وهو عبارة عن رفرنس يمثل تركيب للبيانات يمكن أن يجمع عدة انواع مختلفة منها في آن واحد !. وهذا ما يميزها عن List وبقية انواع generics التي نعرفها جميعاً .
يمكن للtuple الواحد أن يحتوي على 8 عناصر الأخير منها يكون من نوع tuple Rest
var MyFirstTuple = System.Tuple.Create(32, 35, 75, 59, 345, 236, 8564, 2566);
Console.WriteLine("1st item: {0}", MyFirstTuple.Item1); // 32
Console.WriteLine("4th item: {0}", MyFirstTuple.Item5); // 345
Console.WriteLine("8th item: {0}", MyFirstTuple.Rest); // (2566)
Console.ReadKey();لاحظ أننا نصل للعنصر الأخير من الtuple عن طريق MyFirstTuple.Rest .
انظر للمثال التالي ولاحظ كيف أننا قمنا بعمل عدة انواع داخل الtuple:
var MySecondtTuple = System.Tuple.Create("is", 5.9, 8.0f, new List<char> { 'e', 't', 'h'}, "Microsoft", newStack<int>(4), "best", MyFirstTuple);
// سوف نرتب الأحرف في العنصر الرابع ونعكسهم
MySecondtTuple.Item4.Sort();
MySecondtTuple.Item4.Reverse();
Console.WriteLine("{0} {1} {2} {3}", MySecondtTuple.Item5,MySecondtTuple.Item1,string.Concat(MySecondtTuple.Item4), MySecondtTuple.Item7);
// Microsoft is the best
Console.WriteLine("Rest: {0}", MySecondtTuple.Rest);// ((32, 35, 75, 59, 345, 236, 8564, 2566))
Console.WriteLine("Rest's 2nd element: {0}", MySecondtTuple.Rest.Item1.Item2); //32
Console.WriteLine("Rest's 7th element: {0}", MySecondtTuple.Rest.Item1.Item7); //8564
Console.ReadKey();المثال السابق يوضح كيف قمنا باعطاء قيم تتكون من انواع مختلفة في tuple واحد وثم بعد ذلك قمنا بالتعامل مع هذه القيم .
لاحظ أن العنصر الأخير من الtuple يحتوي على الtuple السابقة التي عرفناها في المثال الأول وبهذه الطريقة يمكننا أن نحصل فعلياً على اكثر من ال8 عناصر المسموحة لنا .
الفائدة الرائعة للtuple أنه يمكن استعمالها لتكون نوع ميثود مما يمكن هذا الميثود من ارجاع عدة قيم وانواع مختلفة في ان واحد !!
لمزيد من المعلومات عن tuples راجع الرابط التالي :
http://msdn.microsoft.com/en-us/magazine/dd942829.aspx
عبد العظيم بخاري