web-dev-qa-db-fra.com

En C #, pouvez-vous définir un alias avec une valeur Tuple avec des noms?

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

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?

54
Nick Randell

Ceci a été demandé et enregistré dans le dépôt Roslyn sur Github . Cependant, il a reçu un accueil mitigé là-bas, et les types d’enregistrement proposés , couvriraient largement cette exigence.

Le problème a été fermé dans le référentiel Roslyn mais est maintenant suivi dans le référentiel en langage C # .

44
David Arno

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

(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-ce pas même au courant que C # 7.0 existait jusqu'à présent.

1
Christopher

Vous pouvez étendre System.Tuple - à peu près comme ceci:

    public sealed class ResponseKey : System.Tuple<System.Guid, string, string>
    {
        public ResponseKey(System.Guid item1, string item2, string item3) : base(item1, item2, item3)
        {
        }

        public System.Guid VenueId => Item1;
        public string ContentId => Item2;
        public string Answer => Item3;
    }
0
eddiewould