## 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.

``` // Instantiate using constructor
Tuple<int, string, int> t1 = new Tuple<int, string, int>(3, "Frank", 9);

// Instantiate using create method
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 8th 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);
int y = Convert.ToInt32(pointList);
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.