A Tuple in C# is a data structure that allows you to group together a fixed set of elements, each potentially of a different type. Tuples are part of the C# language starting from C# 7.0.
static void Main()
{
// Tuple Literal (C# 7.0 and later)
var person = ("John", 30, "Engineer");
Console.WriteLine($"Tuple Literal: {person.Item1}, {person.Item2}, {person.Item3}");
// Tuple Class
var anotherPerson = new Tuple<string, int, string>("Alice", 25, "Developer");
Console.WriteLine($"Tuple Class: {anotherPerson.Item1}, {anotherPerson.Item2}, {anotherPerson.Item3}");
// Named Elements (C# 7.0 and later)
var namedPerson = (Name: "Bob", Age: 35, Occupation: "Manager");
Console.WriteLine($"Named Elements: {namedPerson.Name}, {namedPerson.Age}, {namedPerson.Occupation}");
// Accessing Tuple Elements by Position
string name = person.Item1;
int age = person.Item2;
string occupation = person.Item3;
Console.WriteLine($"Accessing Elements by Position: {name}, {age}, {occupation}");
// Accessing Tuple Elements by Name (C# 7.0 and later)
string namedName = namedPerson.Name;
int namedAge = namedPerson.Age;
string namedOccupation = namedPerson.Occupation;
Console.WriteLine($"Accessing Elements by Name: {namedName}, {namedAge}, {namedOccupation}");
// Deconstructing Tuples (C# 7.0 and later)
var (deconstructedName, deconstructedAge, deconstructedOccupation) = person;
Console.WriteLine($"Deconstructing Tuple: {deconstructedName}, {deconstructedAge}, {deconstructedOccupation}");
// Returning Multiple Values from a Method
var result = GetMinMax(new int[] { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3 });
Console.WriteLine($"Min: {result.Item1}, Max: {result.Item2}");
}
// Method returning a tuple
static (int, int) GetMinMax(int[] numbers)
{
int min = numbers.Min();
int max = numbers.Max();
return (min, max);
}