Puisse quelqu'un expliquer ce qu'est un tuple et comment l'utiliser dans un scénario du monde réel. Je voudrais savoir comment cela peut enrichir mon expérience de codage?
Cet article msdn l'explique très bien avec des exemples, " Un tuple est une structure de données qui a un nombre spécifique et une séquence d'éléments ".
Les tuples sont couramment utilisés de quatre manières:
Pour représenter un seul ensemble de données. Par exemple, un tuple peut représenter un enregistrement de base de données et ses composants peuvent représenter des champs individuels de l'enregistrement.
Faciliter l'accès à un ensemble de données et la manipulation de celui-ci.
Pour renvoyer plusieurs valeurs d'une méthode sans utiliser les paramètres out (en C #) ou les paramètres
ByRef
(en Visual Basic).Pour transmettre plusieurs valeurs à une méthode via un seul paramètre. Par exemple, la méthode
Thread.Start(Object)
possède un seul paramètre qui vous permet de fournir une valeur à la méthode que le thread exécute au moment du démarrage. Si vous fournissez un objetTuple<T1, T2, T3>
comme argument de méthode, vous pouvez fournir à la routine de démarrage du thread trois éléments de données.
Un tuple vous permet de combiner plusieurs valeurs de types éventuellement différents dans un même objet sans avoir à créer une classe personnalisée. Cela peut être utile si vous souhaitez écrire une méthode qui, par exemple, renvoie trois valeurs associées sans pour autant créer une nouvelle classe.
Habituellement, vous devez créer une classe, car cela vous permet de donner des noms utiles à chaque propriété. Le code qui utilise beaucoup de nuplets deviendra rapidement illisible car les propriétés sont appelées Item1
, Item2
, Item3
, etc.
La différence entre un tuple et une classe est qu'un tuple n'a pas de nom de propriété. Ce n’est presque jamais une bonne chose, et je n’utiliserais un tuple que lorsque les arguments n’auraient aucun sens, comme dans une formule mathématique abstraite, par exemple. un calcul abstrait sur 5,6,7 dimensions pourrait prendre un tuple pour les coordonnées.
C'est la chose la plus importante à savoir sur le type Tuple. Tuple est une classe, pas une structure. Il sera donc alloué sur le tas géré. Chaque instance de classe allouée ajoute à la charge de la récupération de place.
Remarque: Les propriétés Item1, Item2, et autres n'ont pas de setters. Vous ne pouvez pas les assigner. Le tuple est immuable une fois créé en mémoire.
Les classes de nuplets permettent aux développeurs d’être "rapides et paresseux" en ne définissant pas de classe spécifique pour un usage spécifique.
Les noms de propriété sont Item1, Item2, Item3 ..., ce qui peut ne pas être significatif dans certains cas ou sans documentation.
Les classes de tuples ont des paramètres génériques fortement typés. Les utilisateurs des classes de nuplets peuvent toujours déduire du type de paramètres génériques.