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.
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.
Even we can create a nested tuple also following is code for nested tuple.
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!!
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
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.
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.
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 output of above code as expected.
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!!
Hi,
ReplyDeleteI recently joined your page on G+. Yours topics/posts are very interesting and easy to understand. I am very thankful to you for this.
Now, regarding the above topic; I just want to ask that the Tuple seems to be similar to struct as both can store the data of different data types. So when should I use the Tuple instead of Struct.
Thanks.
Gurjeet Singh - Thanks for joining me and thanks for compliments. I am writing for my satisfaction and via this if I can help community a little then it will be honor for me.
ReplyDeleteNow regarding your question. 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.
Hope this satisfy your query.
Thanks a lot, for the explanation.
ReplyDeleteYou are most welcome!!
ReplyDeleteIn most cases anonymous types are better to use since you can name your arguments, like this:
ReplyDeletevar anonType = new { First = "Jalpesh", Middle = "P", Last = "Vadgama" };
Console.WriteLine(anonType);However in some cases, like together with the extension method IEnumerable.Zip you get a very compact syntax using Tuple:var stringArray = new[] { "one", "two", "three" };
var intArray = new[] { 1, 2, 3 };
foreach (var pair in stringArray.Zip(intArray, Tuple.Create))
{
Console.WriteLine(pair);
}
Albin Sunnanbo I agree
ReplyDelete