SUPERCAT.DEV

Benvenut* sul mio blog

CSHARP

Tuple in C#

16-01-2023

Riassunto nell'uso delle tuple

using System;

namespace S
{
    class Program
    {
        public static (int, int, int) Semaforo(string azione) {
            return azione switch {
                "verde" => (0,0,1),
                "rosso" => (1,0,0),
                "giallo" => (0,1,0),
                _ => (-1,-1,-1)
            };
        }

        static void Main(string[] args)
        {
            // Tupla unnamed - i valori sono definiti come Item.. e non hanno nomi
            var s = (1,0,0,"rosso");
            Console.WriteLine($"{s.Item1},{s.Item2},{s.Item3},{s.Item4}");
            // 1,0,0,rosso

            // Tupla named
            var semaforo = (luce1: 0, luce2: 0, luce3: 1, azione: "verde");
            Console.WriteLine($"{semaforo.azione}:{semaforo.luce3}");
            // verde:1

            // Ritorno di tupla
            var rit = Semaforo("giallo");
            Console.WriteLine($"giallo:{rit.Item1},{rit.Item2},{rit.Item3}");
            // giallo:0,1,0

            // Ritorno nominato
            (int rosso, int giallo, int verde) = Semaforo("rosso");
            Console.WriteLine($"rosso:{rosso},{giallo},{verde}");
            // rosso:1,0,0
        }
    }
}