Considérons ce bit de code obfusqué. L'intention est de créer un nouvel objet à la volée via le constructeur anonyme et yield return
. L'objectif est d'éviter d'avoir à maintenir une collection locale simplement pour le return
.C#: retour de rendement dans un échec foreach - le corps ne peut pas être un bloc d'itérateur
public static List<DesktopComputer> BuildComputerAssets()
{
List<string> idTags = GetComputerIdTags();
foreach (var pcTag in idTags)
{
yield return new DesktopComputer() {AssetTag= pcTag
, Description = "PC " + pcTag
, AcquireDate = DateTime.Now
};
}
}
Malheureusement, ce morceau de code produit une exception:
Erreur 28 Le corps de 'Foo.BuildComputerAssets() ne peut pas être un bloc itérateur parce que 'System.Collections.Generic.List' n'est pas un type d'interface iterator
questions
- Que signifie ce message d'erreur? Comment éviter cette erreur et utiliser correctement
yield return
?