Sommaire

Les "Tuple" et "ValueTuple" Tuple ValueTuple

Dans le même esprit, il est possible de construire des agrégats dans des types "légers" sans avoir à déclarer de classes classiques. Ces types sont appelés des Tuples et sont très pratiques, surtout depuis que C# 7 les a grandement améliorés avec ses "ValueTuple".

Voici justement un exemple d’agrégat de deux chaînes et d’un entier dans un ValueTuple :

(string marque, string modele, int cc) m  
= ("BMW", "R1200R", 1200);  
Console.WriteLine($"La {m.marque}/{m.modele} a un moteur de {m.cc} cm3");

Si vous essayez ce code pour la première fois, Visual Studio vous proposera d’installer le package NuGet System.ValueTuple :

images/05ri32v2.png

Dans ce code, la variable m est de type ValueTuple. La syntaxe est simple et rapide à mettre en œuvre, mais vous pouvez également tout définir "côté droit" comme ceci :

var m2 = (marque: "Triumph", modele: "T120", cc: 1200);  
Console.WriteLine($"La {m2.marque}/{m2.modele} a un moteur de  
{m2.cc} cm3");

Il est également possible de déclarer un ValueTuple en retour de méthode.

(string marque, string modele, int cc) Ducati()  
{  
    return ("Ducati", "Monster", 1200);  
}  

Voici l’ensemble du code :

namespace DemoTuples  
{  
    ...