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);
    }