HOWTO · Csharp
Initialiser une liste de tuples en C#
Cet article explore plusieurs approches pour initialiser efficacement une liste de tuples en C#.
Sur cette page
Pour initialiser une liste de tuples en C#, choisissez entre List<Tuple<int, string>> pour des tuples référence et List<(int, string)> pour des tuples valeur. Vous pouvez créer les éléments dans un initialiseur de collection, les ajouter avec Add() ou projeter une séquence existante avec LINQ. Ces types de tuples sont distincts : choisissez celui qui correspond aux types utilisés dans le reste de votre code.
Initialiser une liste de tuples en C# avec la méthode Tuple.Create()
Tuple.Create() crée un tuple référence. Un initialiseur de collection permet de créer plusieurs éléments lors de la déclaration d’une List<Tuple<int, string>> :
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tupleList = new List<Tuple<int, string>>
{
Tuple.Create(1, "Apple"),
Tuple.Create(2, "Banana"),
Tuple.Create(3, "Cherry")
};
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
Le type générique de la liste indique les types des éléments du tuple : un int, suivi d’une string. Tuple.Create() déduit ces types à partir de chaque paire de valeurs, et la boucle parcourt les éléments dans leur ordre d’insertion. Consultez la documentation de la méthode Tuple.Create() pour connaître ses surcharges.
Initialiser une liste de tuples en C# avec la notation ()
Une liste peut aussi contenir des tuples valeur, écrits avec la notation (). Cet exemple utilise List<(int, string)> et initialise directement trois éléments :
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tupleList = new List<(int, string)>
{
(1, "Apple"),
(2, "Banana"),
(3, "Cherry")
};
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
Ici, (int, string) est le type d’élément tuple valeur, et chaque paire entre parenthèses fournit un élément de la liste. Les mêmes paires peuvent être représentées avec un autre type d’élément de liste. Pour en savoir plus, consultez la documentation sur les tuples valeur en C#.
Initialiser une liste de tuples en C# avec List<Tuple<T1, T2>> et Add()
Utilisez Add() lorsque les éléments arrivent au fil du temps ou que la liste est construite par la logique de l’application. Commencez par une liste vide, puis ajoutez chaque tuple référence :
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tupleList = new List<Tuple<int, string>>();
tupleList.Add(Tuple.Create(1, "Apple"));
tupleList.Add(Tuple.Create(2, "Banana"));
tupleList.Add(Tuple.Create(3, "Cherry"));
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
Le type déclaré de la liste détermine le type de tuple qu’elle contient. Chaque appel à Add() ajoute un Tuple<int, string> ; Tuple.Create() construit ce tuple référence à partir des valeurs fournies.
Initialiser une liste de tuples en C# avec LINQ
LINQ est utile lorsque les éléments du tuple proviennent d’une séquence existante. Select() projette chaque nombre en tuple, puis ToList() matérialise la séquence projetée sous forme de liste :
using System;
using System.Linq;
class Program
{
static void Main()
{
var tupleList = Enumerable.Range(1, 3)
.Select(i => Tuple.Create(i, $"Fruit{i}"))
.ToList();
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
Enumerable.Range(1, 3) fournit les valeurs 1, 2 et 3. La projection associe chaque nombre à une chaîne, et ToList() renvoie une List<Tuple<int, string>>. Comme la projection utilise Tuple.Create(), il s’agit de tuples référence.
Conclusion
Pour un ensemble fixe de valeurs, un initialiseur de collection est concis, que vous utilisiez Tuple.Create() ou des littéraux de tuple valeur. Utilisez Add() pour construire progressivement une List<Tuple<T1, T2>>, et LINQ pour convertir une séquence existante en éléments de tuple. Les tuples référence (Tuple<T1, T2>) et les tuples valeur ((T1, T2)) sont des types différents ; veillez à choisir un type compatible avec les API et les données utilisées par votre code.