Nous avons le code suivant qui a bien fonctionné dans notre application UWP jusqu'à aujourd'hui après avoir mis à jour Visual Studio 2017 au plus tard 15..
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 cela dans la fenêtre de sortie
Le nom d'élément de tuple 'items' est déduit. Veuillez utiliser la version linguistique 7.1 ou supérieure pour accéder à un élément par son nom présumé.
Une idée pourquoi et comment résoudre ce problème?
Projet-> Propriétés-> Build-> Advanced-> Version de langue-> C # dernière version mineure
C'est un bug confirmé, introduit dans 15.3. Le correctif sera livré dans le cadre d'une version de maintenance (15.3.2).
Le problème est suivi à https://github.com/dotnet/roslyn/issues/21518
On dirait que c'est un rupture de changement en C # 7.1. (comme l'a souligné @JulienCouvreur, il s'agit en fait d'un bug, mais la solution ci-dessous devrait toujours fonctionner).
Solution
Essayez de donner explicitement un name (par exemple, utilisez le même nom items
de IList<(string, bool)> items
pour être cohérent) à items
(c'est-à-dire l'instance de liste ).
var group = (Guid.NewGuid(), items: items);