Avec l'implémentation de C # 7, Tuples est devenu BEAUCOUP plus facile à utiliser. En fait, j'ai un cas où j'utiliserai une signature Tuple identique pour quelques méthodes.

Pour économiser sur la saisie, puis-je lui donner un nom ou un alias? Ou devrais-je simplement aller de l'avant et définir une structure?

2
Benjamin Chambers 26 avril 2017 à 03:12

3 réponses

Meilleure réponse

Après avoir lu plus de doublons existants, il y a un point important qui, je pense, devrait être mentionné: les tuples en C # 7 sont du sucre syntaxique, ce qui rend les Structs plus faciles à utiliser comme éléments uniques.

Cela étant le cas, si une structure particulière de tuple doit être suffisamment réutilisée pour avoir besoin d'un nom, alors la syntaxe Struct complète serait la solution appropriée.

2
Benjamin Chambers 27 avril 2017 à 20:02

Vous pouvez utiliser un alias avec des tuples de valeur comme avec tout autre type:

> using T = System.ValueTuple<int, string>;    
> T t;
> t.Item1 = 1;
> t.Item2 = "one";

Mais ce n'est probablement pas ce que vous recherchez. Et c'est parce que les noms de valeurs de tuple ne sont pas dans le type lui-même mais dans les variables et les valeurs de retour.

Dans le cas des variables, le compilateur garde une trace des noms de valeur. Dans le cas des valeurs de retour, l'attribut [System.Runtime.CompilerServices.TupleElementNamesAttribute] est utilisé pour attacher les noms à la valeur de retour.

3
Paulo Morgado 26 avril 2017 à 06:20

Non, vous ne pouvez pas créer d'alias. Si vous voulez une sorte de "forme courte", vous devrez définir un type réel et l'utiliser à la place du tuple.

2
Scott Chamberlain 26 avril 2017 à 00:15