En C #, pouvez-vous définir un alias pour un tuple de valeur avec des noms?


92

Je sais qu'il est possible de définir des alias en C # avec le mot clé using .

par exemple

using ResponseKey = System.ValueTuple<System.Guid, string, string>;

Cependant, est-il possible d'en définir un en utilisant la nouvelle syntaxe pour les tuples de valeur?

using ResponseKey = (Guid venueId, string contentId, string answer);

Cette syntaxe ne semble pas fonctionner. Devrait-il?


1
Je ne connais pas la réponse, mais cela ressemble beaucoup à "puis-je utiliser var au niveau du module pour définir une variable?"
Mario Vernari

si cela ne compile pas, cela ne devrait pas fonctionner
Selman Genç

4
Je ne connais pas la réponse, mais il semble qu'il soit préférable de créer une classe ou une structure à cette fin. Les tuples sont bons, mais ne les abusez pas.
Yeldar Kurmangaliyev

4
Commentaire intéressant @YeldarKurmangaliyev. La raison de son utilisation est de ne pas avoir à implémenter toutes les interfaces comparables à utiliser comme clé simple pour un objet. Oui, c'est moi qui suis paresseux, mais cela utilise également les fonctionnalités du langage au maximum.
Nick Randell

3
@NickRandell - la plupart du temps vous écrivez des logiciels pour les gens (autres développeurs) - ils liront votre code. Avoir une classe et des propriétés avec des noms descriptifs - est une approche plus conviviale / efficace. La plupart du temps que les programmeurs passent à lire des noms descriptifs et des structures de données de code (propres et autres) leur fera gagner du temps
Fabio

Réponses:



1

usingest défini comme: ( MSDN ).using identifier = namespace-or-type-name;

(Guid venueId, string contentId, string answer) n'est ni un espace de noms ni un nom de type (qualifié complet).

Mais je devine surtout. N'était même pas conscient que C # 7.0 existait jusqu'à présent.


1
C'est la spécification pour C # 1.1, comment cela prouve-t-il quelque chose à propos de C # 7.0?
svick

1
Je comprends d'où vient l'hypothèse que cela fonctionnerait. Aurait pu faire le même mais ce n'est pas juste. L'utilisation n'est pas un alias pour un type. Mais pour un nom de type ou un nom d'espace de noms. Et les fonctionnalités liées au compilateur sont l'une des dernières choses que vous pouvez changer, sans casser le code existant. Donc, ils ne peuvent probablement pas l'étendre. Mais tout cela est probablement expliqué plus en détail dans le post de David Arno ci-dessus. Ce que j'ai voté parce qu'il y répond mieux. Faire de votre question une sorte de non-problèmes ...
Christopher

2
@svick La question était de savoir si cette syntaxe spécifique "devrait" être autorisée. Cela répond correctement par "non, les développeurs C # ne sont pas obligés d'autoriser cette syntaxe spécifique, car des syntaxes similaires n'étaient pas autorisées depuis les premières versions de C #". La question plus large est de savoir si une expression de type doit être autorisée using.
IllidanS4 soutient Monica

1
@ IllidanS4 Si c'est ce que dit cette réponse, alors ce n'est vraiment pas clair. Il ne mentionne pas que la spécification liée est ancienne ou fait partie de l'argument que vous avez avancé.
svick

5
@Christopher Si je pense qu'une réponse est mauvaise, je la commenterai. Peu m'importe la rapidité avec laquelle la réponse a été rédigée ou les dénis de responsabilité dont elle dispose. Et si vous pensez que votre réponse n'ajoute aucune valeur, n'hésitez pas à la supprimer. De plus, je pense que les gens viennent au SO pour trouver des réponses éclairées, alors peut-être devriez-vous réfléchir un peu avant d'écrire une réponse non informée?
svick
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.