2010. február 9., kedd

Tuple

- Mit tettek értünk a redmondiak? Semmit!
- Visual Studio 2010 Relase Candidate!
- Mit?
- VS2010 RC.
- Ó, igen, ezt ők adták, ez igaz.
- És variancia-támogatást a nyelvbe.
- Igen, relase candidate-et, és variancia támogatást, igen, de ezektől eltekintve...
- Az AppFabricot!
- Jól van, de eltekintve a release candide-től, a variancia-támogatástól, az AppFabrictól, a dinamikus nyelvek támogatásától, az újraírt workflowtól eltekintve... mit adtak nekünk a redmondiak?

Hát a Tuple-t.
A tuple egy olyan adatszerkezet, ami több, különböző típusú "al-elemet" fog össze. Kb. mint egy tömb, aminek mindegyik eleme más-más típusú lehet.

Képzeljük el, hogy egy metódusban vissza kell adnunk egy string-et és egy int-et. Több lehetőségünk is van, pl. string visszatérési érték + 1 out int paraméter használata, vagy egy egyszerű, "adathordozó" oszály legyártása, ami pont egy string-et és egy int-et tud getelni-setelni. Lehetőleg inkább csak getelni, setelni csak a létrehozásakor. Na a Tuple pont ez utóbbit tudja.

A Tuple egy generikus adatszerkezet, ami a generikus típusparamétereinek megfelelő adatokat tudja tárolni. Az adattagokat csak létrehozáskor lehet beállítani, a tuple példány életciklusában később már csak getelni lehet az tuple által biztosított Item1, Item2, Itemn propertyken keresztül. Mivel ez legalább olyan érthetetlen lett, mint a többi magyarázatom, jöjjön a példa:

var tuple = new Tuple<string, string, int>("otperc", ".net", 42);
string s1 = tuple.Item1;
string s2 = tuple.Item2;
int i = tuple.Item3;

Még elegánsabb, ha a Tuple.Create() statikus metódussal gyártjuk le a Tuple példányunkat, ekkor ugyanis a fordító képes a generikus típusparamétereket a metódushívás paramétereinek típusából kiinferálni. Magyarul, nem kell kiírni a kacsacsőrös rész:
var tuple = Tuple.Create("otperc", ".net", 42);

Ennyi. Nem rakétatudomány, de hasznos kis tool.

0 megjegyzés:

Megjegyzés küldése