So, let’s go back to our subject, .NET 4.0 new stuff & features.
One of the newest things that we will have in .NET 4.0 is a tuple, what’s right and it’s not a joke!
A tuple is data structure which can contain different types of data coupled. This is what makes it different from a List or other generic types.
Note: Do not confuse it with Microsoft.Dynamics.Framework.Reports.Tuple. It is another type.
So a tuple which will contain to 7 elements is created with a factory. System.Tuple.Create. A tuple with 8 elements will contain 7 elements and another tuple Rest.
Why would we need this type? Well, this allows us to return two or more values of different types.
Here is the code which i made to play a little bit with this type.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Intro.Tuple { class Program { static void Main(string[] args) { var squaresList = System.Tuple.Create(1, 4, 9, 16, 25, 36, 49, 64); Console.WriteLine("1st item: {0}", squaresList.Item1); Console.WriteLine("4th item: {0}", squaresList.Item4); Console.WriteLine("8th item: {0}", squaresList.Rest); Console.ReadKey(); Console.WriteLine(Environment.NewLine); var tupleWithMoreThan8Elements = System.Tuple.Create("is", 2.3, 4.0f, new List{ 'e', 't', 'h' }, "udevi", new Stack (4), "best", squaresList); // we'll sort the list of chars in descending order tupleWithMoreThan8Elements.Item4.Sort(); tupleWithMoreThan8Elements.Item4.Reverse(); Console.WriteLine("{0} {1} {2} {3}", tupleWithMoreThan8Elements.Item5, tupleWithMoreThan8Elements.Item1, string.Concat(tupleWithMoreThan8Elements.Item4), tupleWithMoreThan8Elements.Item7); Console.WriteLine("Rest: {0}", tupleWithMoreThan8Elements.Rest); Console.WriteLine("Rest's 2nd element: {0}", tupleWithMoreThan8Elements.Rest.Item1.Item2); Console.WriteLine("Rest's 5th element: {0}", tupleWithMoreThan8Elements.Rest.Item1.Item5); Console.ReadKey(); Console.WriteLine(Environment.NewLine); var tuple = GetNameAndAge(); Console.WriteLine(Environment.NewLine); Console.WriteLine("Name: {0}", tuple.Item1); Console.WriteLine("Age: {0}", tuple.Item2); Console.ReadKey(); } private static Tuple GetNameAndAge() { var resultingTuple = System.Tuple.Create(string.Empty, 0); Console.WriteLine("Enter your name please: "); string name = Console.ReadLine(); Console.WriteLine("Enter your age please: "); string ageValue = Console.ReadLine(); int age = -1; if (int.TryParse(ageValue, out age)) { resultingTuple = new Tuple (name, age); } return resultingTuple; } } }
And here is what in our case the Rest is:
And the output:
Hope it helps you! See you around!
No comments:
Post a Comment