Tuple in C# 4.0

C# 4.0 language includes a new feature called Tuple. Tuple provides us a way of grouping elements of different data type. That enables us to use it a lots places at practical world like we can store a coordinates of graphs etc.

In C# 4.0 we can create Tuple with Create method. This Create method offer 8 overload like following. So you can group maximum 8 data types with a Tuple. Followings are overloads of a data type.

  • Create(T1)- Which represents a tuple of size 1
  • Create(T1,T2)- Which represents a tuple of size 2
  • Create(T1,T2,T3) – Which represents a tuple of size 3
  • Create(T1,T2,T3,T4) – Which represents a tuple of size 4
  • Create(T1,T2,T3,T4,T5) – Which represents a tuple of size 5
  • Create(T1,T2,T3,T4,T5,T6) – Which represents a tuple of size 6
  • Create(T1,T2,T3,T4,T5,T6,T7) – Which represents a tuple of size 7
  • Create(T1,T2,T3,T4,T5,T6,T7,T8) – Which represents a tuple of size 8

Following are some example code for tuple.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TupleExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var tuple = System.Tuple.Create<string, string, string>("Jalpesh", "P", "Vadgama");
            Console.WriteLine(tuple);

            var t = System.Tuple.Create<int, string>(1, "Jalpesh");
            Console.WriteLine(t); 
 
        }
    }
}
Following is a output of above as expected.Tuple in C# 4.0

You can also access values insides Tuple with ItemN property. Where N represents particular number of item in tuple. Following is an example of it.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TupleExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var tuple = System.Tuple.Create<string, string, string>("Jalpesh", "P", "Vadgama");
            Console.WriteLine(tuple.Item1);
            Console.WriteLine(tuple.Item2);
            Console.WriteLine(tuple.Item3);
        }
    }
}

Here you can see I have printed items with Item1,Item2 and Item3 . Following is the output of above code.

Tuple example in C# 4.0 

Even we can create a nested tuple also following is code for nested tuple.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TupleExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var tuple = System.Tuple.Create(1,"Jalpesh",new Tuple<string,string>("P","Vadgama"));
            Console.WriteLine(tuple.Item1);
            Console.WriteLine(tuple.Item2);
            Console.WriteLine(tuple.Item3);

        }
    }
}
Following is a output above code as expected.

Netsted tuple in C# 4.0

As you can see there are unlimited possibilities we can do lots of things with Tuple. Hope you liked it. Stay tuned for more. Till then Happy Programming!!

Shout it
Published Monday, April 16, 2012 2:49 AM by Jalpesh P. Vadgama
Filed under: , ,

Comments

# re: Tuple in C# 4.0

Monday, April 16, 2012 4:32 PM by Wade Beasley

Why not just use a struct?  It is fundamentally the same.

# re: Tuple in C# 4.0

Monday, April 16, 2012 6:05 PM by Jalpesh P. Vadgama

@Wede-Tuple is slightly different then Struct following are different.

1) Tuple are immutable so once you create it. You can not change it. Just like string its immutable. When you create a string or assign string to another value it will create a new string in memory

2) There is only way to create Tuple is to create method. While struct can be modified and assigned to a new value.

3) As you can't change is its slightly having better performance in terms of memory management then structs.

# re: Tuple in C# 4.0

Tuesday, April 17, 2012 1:50 AM by venky

Good one and simple! ll try to use it in real.... Thanx buddy

# re: Tuple in C# 4.0

Tuesday, April 17, 2012 9:12 AM by David

One of the biggest benefits is really interop with other langauges where tuples are native to the language (like F#) - so while it is a nice feature to have in C# a big benefit is having a common way of doing tuples between different languages.

Probably also worth calling out that all your examples like:

var tuple = System.Tuple.Create<string, string, string>("Jalpesh", "P", "Vadgama");

Can just be written like:

var tuple = System.Tuple.Create("Jalpesh", "P", "Vadgama");