Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 24117|Répondre: 1

[Source] Explication détaillée du Tuple C# VS ValueTuple

[Copié le lien]
Publié sur 14/05/2018 16:37:48 | | | |
C# 7.0 est sorti depuis un moment, et tout le monde sait qu’il existe une optimisation pour les tuples dans la nouvelle fonctionnalité : ValueTuple. Voici des exemples détaillés pour expliquer Tuple VS ValueTuple en 10 minutes afin de mieux comprendre les avantages et l’utilisation de ValueTuple.

Si vous connaissez suffisamment les Tuples, vous pouvez passer la section « Examiner les Tuples » et aller directement à la section « ValueTuple Explained » pour voir l’utilisation éblouissante des tuples value.



Regardez en arrière sur Tuple

Tuple est une nouvelle fonctionnalité sortie avec C# 4.0 et disponible en .Net Framework 4.0 et versions ultérieures.

Un tuple est une structure de données avec un nombre et une séquence spécifiques d’éléments. Par exemple, concevez une structure de données triple pour stocker les informations des élèves, qui contient un total de trois éléments : le premier est le nom, le second l’âge, et le troisième la taille.

Les usages spécifiques des tuples sont les suivants :

1. Comment créer un tuple

Par défaut. Cadre du NetLes tuples ne supportent que 1 à 7 éléments de tuplesS’il y a 8 éléments ou plus, il faut utiliser les propriétés de nesting et Rest de Tuple pour l’implémenter. De plus, la classe Tuple fournit une méthode statique pour créer des objets tuples.

Créez des tuples à l’aide de constructeurs :

Construisons des tuples en utilisant la méthode statique des tuples, supportant jusqu’à huit éléments :
Note : Le type de Tuple construit ici est en réalité Tuple<int, int, int, int, Tuple<int>>, donc le type de données obtenu par testTuple8.Rest est Tuple<int>, donc pour obtenir la valeur exacte, il faut prendre la propriété Item1.

2. Représente un ensemble de données
Créez un tuple ci-dessous pour représenter trois informations sur un élève : nom, âge et taille, sans créer de classe supplémentaire séparément.

3. Retourner plusieurs valeurs d’une méthode
Lorsqu’une fonction doit retourner plusieurs valeurs, le paramètre out peut généralement être utilisé, et les tuples peuvent être utilisés à la place de out pour retourner plusieurs valeurs.
4. Transfert multi-valeurs pour les méthodes à paramètre unique

Lorsque le paramètre de fonction n’est qu’un seul type d’objet, plusieurs valeurs de paramètre peuvent être transmises via l’implémentation du tuple.

Malgré les méthodes pratiques mentionnées ci-dessus, les tuples présentent également des défauts importants :

  • Lors de l’accès aux éléments, vous ne pouvez y accéder que via ItemX, et il faut clarifier l’ordre des éléments avant utilisation, et les noms des attributs n’ont aucune signification pratique, ce qui est difficile à retenir.
  • Il y a jusqu’à huit éléments, et si vous en voulez plus, vous ne pouvez étendre qu’en imbriquant avec le dernier élément ;
  • La tuple est un type de référence, pas un type de valeur comme d’autres types simples, qui alloue de l’espace sur le tas et peut demander trop de travail de création et d’allocation lorsqu’il est très exigeant pour le CPU.


Par conséquent, un nouveau type ValueTuple a été introduit dans C# 7.0, détaillé dans les sections suivantes.

ValueTuple explique en détail

ValueTuple est l’une des nouvelles fonctionnalités de C# 7.0, disponible pour .Net Framework 4.7 et versions ultérieures.

ValueTuple ne nécessite pas 4,7, tant que Nuget est correct, 4,7 est intégré.
De plus, ValueTuple est un type de structure, Microsoft recommande de ne pas utiliser de structures de plus de 64 octets, ce qui est également efficace pour ValueTuple.


Un tuple de valeur est aussi une structure de données utilisée pour représenter un nombre et une séquence spécifiques d’éléments, mais il diffère d’une classe de tuples, avec les principales différences suivantes :

Un uplet de valeur est une structure, un type de valeur, et non une classe, tandis qu’un uplet est une classe, un type de référence ;
Les éléments de la tuple de valeur sont variables, pas en lecture seule, c’est-à-dire qu’ils peuvent modifier la valeur de l’élément dans le tuple de valeur ;
Un tuple de valeurs de membres de données est un champ, pas un attribut.
L’utilisation spécifique des tuples de valeur est la suivante :

1. Comment créer un tuple de valeur
Comme les classes de tuples, les tuples de valeur du .Net Framework ne prennent en charge que 1 à 7 éléments de tuple, et s’il y a 8 éléments ou plus, il faut utiliser les propriétés imbriquées et Rest du tuple de valeur pour l’implémenter. De plus, la classe ValueTuple peut fournir des méthodes statiques pour créer des objets de tuple de valeur.

Créez des tuples à l’aide de constructeurs :

Construisons des tuples en utilisant la méthode statique des tuples, supportant jusqu’à huit éléments :
Notez que le type de Tuple construit ici est en réalité Tuple<int, int, <int>>, donc le type de données obtenu par testTuple8.Rest est Tuple<int>, donc pour obtenir la valeur exacte, il faut prendre la propriété Item1.

Différence d’optimisation :Lorsqu’un uplet de valeurs de plus de 7 éléments est construit, les valeurs du tuple imbriqué peuvent être accessibles en utilisant l’ItemX suivant, et pour l’exemple ci-dessus, pour accéder au dixième élément, soit via testTuple10.Rest.Item3 ou testTuple10.Item10.
2. Représente un ensemble de données
Créez un tuple de valeurs représentant trois informations sur un élève : nom, âge et taille, sans créer une classe supplémentaire séparément.
3. Retourner plusieurs valeurs d’une méthode
Les tuples de valeurs peuvent également retourner plusieurs valeurs à la place du paramètre out dans la définition de la fonction.
Différence d’optimisation :La valeur de retour peut être spécifiée dans le ValueTuple de manière inexplicable, en utilisant une nouvelle syntaxe (,,) à la place, telle que (string, int, uint) :
Le débogage du type d’étudiantInfo est le triplet ValueType.

Différence d’optimisation :La valeur de retour peut spécifier le nom de l’élément afin de faciliter la compréhension de l’attribution et de l’accès à la mémoire :

Attribution pratique de la mémoire :



4. Transfert multi-valeurs pour les méthodes à paramètre unique
Lorsqu’un paramètre de fonction n’est qu’un seul type d’objet, plusieurs valeurs peuvent être transmises en utilisant l’implémentation du tuple de valeurs.
5. Déconstruire le ValueTuple
Vous pouvez utiliser var (x, y) ou (var x, var y) pour résoudre les éléments du tuple afin de construire des variables locales, tout en utilisant le symbole « _ » pour ignorer les éléments indésirables.
Comme mentionné plus haut, ValueTuple rend C# plus simple et plus facile à utiliser. Les principaux avantages par rapport aux Tuples sont les suivants :

  • ValueTuple prend en charge une nouvelle syntaxe pour les valeurs de retour de fonction (,,)", simplifiant le code ;
  • Il convient de noter ici que, bien qu’il soit nommé, la valeur tuple ne définit en réalité pas l’attribut ou le champ d’un tel nom, le vrai nom reste ItemX, et tous les noms d’éléments ne sont utilisés que lors de la conception et de la compilation, pas à l’exécution (il faut donc prêter attention aux opérations de sérialisation et de désérialisation de ce type) ;
  • Certains ou tous les tuplets d’éléments peuvent être utilisés plus facilement en utilisant des méthodes de destruction ;
  • Les uplets de valeur sont des types de valeurs, qui sont plus efficaces à utiliser que les tuples de types de référence, et les uplets de valeur disposent d’une méthode de comparaison permettant de comparer s’ils sont égaux, voir Détails :https://msdn.microsoft.com/en-us/library/system.valuetuple






Précédent:Outils de vulgarisation scientifique pour les architectures à grande échelle
Prochain:HUAWEI CLOUD publie un livre blanc sur la blockchain pour accélérer la mise en œuvre de l’industrie de la technologie blockchain
Publié sur 15/05/2018 11:41:00 |
Je suis d’accord!
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com