La nuova versione di C# rilasciata con VS2017 aggiunge un nuovo tipo di Tupla estremamente più utlizzabile e chiara della Tuple precedentemente presente nel Framework.

Per distinguerla dalla Tupla classica il nuovo tipo si chiama ValueTuple e la sua più grande utilità è quella di poter dare un nome agli elementi. Per spiegarci meglio vediamo un esempio di codice, ricordate di installare il pacchetto NuGet System.ValueTuple per utilizzare il nuovo tipo.

static void Main(string[] args)
{
    var oldTuple = new Tuple<stringint>("Mario", 27);
 
    Console.WriteLine($"Nome {oldTuple.Item1}, età {oldTuple.Item2}");
 
    var newTuple = (Nome: "Mario", Eta: 27);
 
    // mantiene i nomi Item1 e Item2 come la vecchia Tupla
    Console.WriteLine($"Nome {newTuple.Item1}, età {newTuple.Item2}");
    // permette di accedere agli item con il nome selezionato in creazione
    Console.WriteLine($"Nome {newTuple.Nome}, età {newTuple.Eta}");
 
    // possiamo "decomporre" la tupla prendendo i suoi elementi e salvandoli in delle variabili
    // l'assegnazione è posizionale e i nomi delle variabili non influiscono sulla decostruzione
    var (nome, eta) = newTuple;
 
    // possiamo usare la tupla per tutti quei metodi in cui creavano delle classi con il solo scopo di ritornare più
    // valori da un metodo, rispetto alla vecchia tupla possiamo utilizzare dei nomi descrittivi
    (bool success,string message) ExampleMethod(int i)
    {
        if (i % 2 == 0)
            return (true"OK");
 
        return (false"Errore imprevisto");
    }
 
    var result = ExampleMethod(10);
 
    var s = result.success;
    var m = result.message;
}

Abbiamo visto dei sempici esempi sull'utilizzo delle nuove tuple C#

comments powered by Disqus