Līdz ar .NET 4.0 platformas nākšanu gaismā izstrādātājiem būs iespēja izmantot interesantu datu struktūru, kas nāk no funkcionālās programmēšanas valodas saimes – korteži.
Korteži palielam ir dažādu tipu grupa, kura apkopota zem viena mainīgā un katrs apkopotais tips tiek glabāts noteiktā “slotā”.
.NET 4.0 platforma piedāvās līdz pat 8 slotiem, kas manuprāt ir objektīvs skaitlis, jo vairāk par 8 slotiem sāk palikt jau nesaprotami, neuzskatāmi un sarežģīti. Tādos gadījumos būtu jāizvēlas labāk kādu citu datu tipu šīs grupas realizēšanai.
Piemērs no jaunās platformas:
var t = new System.Tuple<int, char, string>(1, 'a', "this is a string");
Izpildes laikā ir redzama objekta “t” saturs:

No implementācijas viedokļa System.Tuple tips nav pārāk sarežģīts. Apmēram šāds ar izmēru – 2 sloti.
public class Tuple<T1, T2>
{
public Tuple(T1 item1, T2 item2)
{
Item1 = item1;
Item2 = item2;
}
public T1 Item1 { get; private set; }
public T2 Item2 { get; private set; }
}
Jāpiemin gan, ka sloti pēc korteža izveides ir pieejami lasīšanas režīmā – ierasts veids funkcionālā programmēšanā :) Ja mēģinās kompilēt kodu, kas izmanto Item1 vai Item2 rakstīšanas režīmā – iegūs CS0200 kļūdu.
Jāpiemin gan, ka citā managed valodā korteži izskatās daudz pievilcīgāki:
> let t = (1, 'a', "this is a string");;
val t : int * char * string = (1, 'a', "this is a string")
Piemēram, šāda veida kortežs:
> (4, '4', "4", (fun x –> x + 4), 4.0, (fun x –> x + 4.0));;
val it : int * char * string * (int –> int) * float * (float –> float)
= (4, '4', "4", <fun:it@5>, 4.0, <fun:it@5_1>)
Pārvērstos par kaut ko pavisam nesaprotamu :)
var t =
new System.Tuple<int, char, string, Func<int, int>, double, Func<double, double>>(...);
Iespējams, ka atradīsiet pielietojumu šim jaunajam datu tipam :)
Cerams, ka noderēs!