Im Gegensatz zu anderen Sprachen, wie Perl, erlaubt C# pro Methode lediglich einen Rückgabewert. Um mehrere Werte zurückzuliefern, musste bis dato auf Arrays, Auflistungen oder komplexe Typen ausgewichen werden. Tuples, welche ab Version 4 mit an Board sein werden, erleichtern solche Aufgaben.
Das folgende Beispiel demonstriert dies: Die Methode Div nimmt zwei Integer für eine Division entgegen. Das Ergebnis ist ein Tupel , welches sowohl das Ergebnis der Division als auch den Restwert beinhaltet. Obwohl hier beide als Integer definiert werden (Tuple<int, int>) ist es auch möglich, ein Tupel mit unterschiedlichen Datentypen zu erzeugen (z. B. Tuple<int, string, double, Hamster>).
static Tuple<int, int> Div(int a, int b)
{
int r1 = a / b;
int r2 = a % b;
return Tuple.Create(r1, r2);
}
...
var tuple = Div(10,3);
Console.WriteLine("Ergebnis: " + tuple.Item1);
Console.WriteLine("Rest: " + tuple.Item2);
Der Vorteil liegt in der Einfachheit. Der Nachteil dieser Vorgehensweise ist jedoch auch offensichtlich: Auf die beiden zurückgelieferten Werte wird über Item1 und Item2 zugegriffen, was nicht gerade selbsterklärend ist und einen Blick in die Dokumentation der Methode bedarf.