Puisse certains expliquer s'il vous plaît ce qu'est un tuple et comment vous l'utiliseriez dans un scénario du monde réel. Je voudrais savoir comment cela peut enrichir mon expérience de codage?
Réponses
Trop de publicités?Cet article msdn , l'explique très bien, avec des exemples, "Un n-uplet est une structure de données qui a un certain nombre et la séquence des éléments".
Les Tuples sont couramment utilisés dans les quatre façons:
Pour représenter un ensemble unique de données. Par exemple, un n-uplet peut représenter un enregistrement de base de données, et ses composants peuvent représenter divers champs de l'enregistrement.
Pour faciliter l'accès aux, et la manipulation d'un ensemble de données.
Pour retourner plusieurs valeurs à partir d'une méthode sans utiliser les paramètres de sortie (en C#) ou
ByRef
paramètres (en Visual Basic).Pour passer plusieurs valeurs à une méthode par le biais d'un seul paramètre. Pour exemple, l'
Thread.Start(Object)
méthode a un seul paramètre vous permet de fournir une valeur à la méthode que le thread s'exécute à les temps de démarrage. Si vous fournissez unTuple<T1, T2, T3>
objet en tant que méthode argument, vous pouvez fournir le fil de la routine de démarrage avec trois les éléments de données.
Un n-uplet vous permet de combiner plusieurs valeurs éventuellement de types différents dans un seul objet, sans avoir à créer une classe personnalisée. Cela peut être utile si vous voulez écrire une méthode que, par exemple, renvoie trois valeurs, mais vous ne voulez pas créer une nouvelle classe.
Habituellement, si vous devez créer une classe comme cela vous permet de donner un nom explicite à chaque propriété. Le Code qui utilise de manière intensive les tuples va vite devenir illisible car les propriétés sont appelés 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 au fardeau de la récupération de place.
Remarque: les propriétés Item1, Item2, et plus encore, n'ont pas de setters. Vous ne pouvez pas les assigner. Le tuple est immuable une fois créé en mémoire.
Les classes de tuples permettent aux développeurs d'être «rapides et paresseux» en ne définissant pas une 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 Tuple peuvent néanmoins déduire du type des paramètres génériques.