Lors de l'écriture des programmes, il est très courant d'logiquement regrouper un ensemble de valeurs qui n'ont pas suffisamment de points communs pour justifier une classe.
De nombreux langages de programmation vous permettent logiquement d'regrouper un ensemble d'autres sans valeurs, sans la création d'un type dans un seul sens:
void M(int foo, string bar, double blah)
Logiquement c'est exactement le même que la méthode M qui prend un argument qui est un 3-tuple de type int, string, double. Mais j'espère que vous ne pas faire:
class MArguments
{
public int Foo { get; private set; }
... etc
sauf MArguments a une autre signification dans la logique d'affaires.
Le concept de "groupe ensemble un tas de données non liées dans une structure qui est plus légère qu'une classe" est utile que dans de très nombreux endroits, et pas seulement formelle des listes de paramètres de méthodes. C'est utile lorsqu'une méthode a deux choses à ce retour, ou lorsque vous voulez clés d'un dictionnaire de données deux plutôt qu'un seul, et ainsi de suite.
Langues comme F# qui soutiennent tuple types nativement fournir beaucoup plus de souplesse à leurs utilisateurs; ils sont un outil très utile de définir des types de données. La BCL équipe a choisi de travailler avec l'équipe F# standardiser sur un tuple de type pour le cadre, pour que toutes les langues pourraient en profiter.
Cependant, il n'existe pas de langue de soutien pour les tuples en C#. Les Tuples sont juste un autre type de données comme n'importe quel autre cadre de la classe; il n'y a rien de spécial à leur sujet. Nous envisageons d'ajouter un meilleur soutien pour les n-uplets dans hypothétiques futures versions de C#. Si quelqu'un a des idées sur ce genre de fonctions impliquant des tuples vous aimeriez voir, je serais heureux de les transmettre à l'équipe de conception. Des scénarios réalistes sont plus convaincants que ceux de réflexions théoriques.