42 votes

Obtenir "Le nom de l’élément du tuple est inféré. Veuillez utiliser le langage version 7.1 ou supérieure pour accéder à un élément par son nom inféré."

Le code suivant fonctionne correctement dans notre application UWP jusqu'à aujourd'hui, après la mise à jour de Visual Studio 2017 à la version 15.3 la plus récente.

 private void Test()
{
    var groups = new List<(Guid key, IList<(string, bool)> items)>();

    var items = new List<(string, bool)>
    {
        ("a", true),
        ("b", false),
        ("c", false)
    };
    var group = (Guid.NewGuid(), items);

    groups.Add(group);
}
 

Il n'y a pas de message d'erreur mais ceci dans la fenêtre de sortie

Le nom de l'élément du tuple 'items' est inféré. Veuillez utiliser le langage version 7.1 ou supérieure pour accéder à un élément par son nom inféré.

Une idée pourquoi et comment résoudre ce problème?

73voto

John Stewien Points 21

Projet-> Propriétés-> Construire-> Avancé-> Version du langage-> Dernière version mineure en C #

11voto

Julien Couvreur Points 76

Ceci est un bug confirmé, introduit dans 15.3. Le correctif sera expédié dans le cadre d'une version de maintenance (15.3.2).

Le problème est suivi à l' adresse https://github.com/dotnet/roslyn/issues/21518.

8voto

Justin XL Points 8658

Il semble que ce soit une modification de rupture en C# 7.1. (comme l'a fait remarquer @JulienCouvreur, c'est réellement un bug, mais la solution de contournement ci-dessous doivent encore travailler tout de même).


Solution de contournement

Essayez de lui donner un nom (par exemple, utiliser le même nom items de IList<(string, bool)> items pour être compatible) explicitement items (c'est à dire la liste, par exemple).

var group = (Guid.NewGuid(), items: items);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X