## What is a Tuple?

In mathematics, A `Tuple `

is a sequence of finite length. An n-`tuple `

is a `tuple `

with n elements. For example (2, 4, 3, 8) is a 4-`tuple`

.

C# 4.0 introduced a new data type `Tuple`

. `Tuple `

is not new in software engineering, but of course it is new in .NET framework 4.0. A `tuple `

is a simple generic data structure that holds an ordered set of items of heterogeneous types. There are two ways to instantiate `Tuple `

by calling either the `Tuple `

constructor or the `static Tuple.Create()`

method.

Tuple<int, string, int> t1 = new Tuple<int, string, int>(3, "Frank", 9);
Tuple<int, int, int> t2 = Tuple.Create(3, 5, 9);

`Tuple `

constructor and `create()`

method can contain a maximum of 8 parameters. You have to take care of the 8^{th} parameter because it replaces another `tuple `

object.

## Simple Use of Tuple

You can easily return more than one value from method without using `out `

or `ref `

parameters.

public Tuple<int, int> SplitPoints(string point)
{
string[] pointList = point.Split(',');
int x = Convert.ToInt32(pointList[0]);
int y = Convert.ToInt32(pointList[1]);
return Tuple.Create<int, int>(x, y);
}

`SplitPoints `

method split the points and returns `x `

and `y `

points in `tuple`

.

Tuple<int,int> points = SplitPoints("12,14");
string msg = string.Format("X: {0}, Y: {1}", points.Item1, points.Item2);
MessageBox.Show(msg);

You can get the returned values from exposed properties `Item1`

, `Item2`

, etc. by `Tuple `

object. Item properties of `Tuple `

object are readonly. You can not change the value of the property.

CodeProject