System.ValueTuple vs System.Tuple
Quelle est la différence ?
Système. ValueTuple et System.Tuple sont deux types qui peuvent être utilisés pour représenter des tuples en C#. Cependant, il existe plusieurs différences clés entre eux.
Différences clés
Feature | ValueTuple | Tuple |
---|---|---|
Value type | Yes | No |
Mutability | Mutable | Immutable |
Item access | Fields | Properties |
Syntax sugar | Supports deconstruction and named arguments | Does not |
Performance | Allocation-free on the stack | Requires heap allocation |
ValueTuple
ValueTuple est une valeur type (struct), ce qui signifie qu'il est alloué sur la pile et ne nécessite pas de garbage collection. Il s'agit d'une structure mutable, ses valeurs peuvent donc être modifiées après sa création. ValueTuple expose ses éléments via des champs au lieu de propriétés.
Tuple
Tuple est un type de référence (classe), ce qui signifie qu'il est alloué sur le tas et nécessite un garbage collection . C'est une classe immuable, ses valeurs ne peuvent donc pas être modifiées après sa création. Tuple expose ses éléments via des propriétés.
Pourquoi utiliser ValueTuple ?
L'utilisation de ValueTuple présente plusieurs avantages par rapport à l'utilisation de Tuple :
Exemple
Utilisation de ValueTuple syntaxe :
public (int sum, int count) DoStuff(IEnumerable<int> values) { var result = (sum: 0, count: 0); foreach (var value in values) { result.sum += value; result.count++; } return result; }
Utiliser la déconstruction :
var (sum, count) = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine($"Sum: {sum}, Count: {count}");
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!