J'ai un code comme celui-ciComprendre l'évaluation paresseuse en C#
class Context
{
public List<Student> lists;
public Context()
{
lists = new List<Student>() {
new Student { Name="foo",Standard="first",subjects=new Subjects { Geography=50,History=81,Science=70} },
new Student { Name="carl",Standard="first",subjects=new Subjects { Geography=40,History=51,Science=50} },
new Student { Name="ben",Standard="first",subjects=new Subjects { Geography=30,History=91,Science=60} },
new Student { Name="peter",Standard="first",subjects=new Subjects { Geography=80,History=71,Science=40} }
};
}
}
class Client
{
static void Main(string[] args)
{
List<Student> lists = new Context().lists;
var result = lists.Where(x => x.subjects.History > 60);
lists.Add(new Student { Name = "tan", Standard = "first", subjects = new Subjects { Geography = 40, History = 81, Science = 60 } });
lists.Add(new Student { Name = "ran", Standard = "first", subjects = new Subjects { Geography = 30, History = 70, Science = 50 } });
lists.Add(new Student { Name = "ranky", Standard = "first", subjects = new Subjects { Geography = 20, History = 31, Science = 40 } });
lists.Add(new Student { Name = "franky", Standard = "first", subjects = new Subjects { Geography = 50, History = 51, Science = 30 } });
foreach (var data in result) {
Console.WriteLine(data);
}
}
}
maintenant pendant le débogage, avant d'ajouter un élément et quand je placer la souris sur la variable, je reçois le résultat comme celui-ci
après avoir ajouté quelques éléments à la liste, quand je passe la souris sur la variable i obtenir le résultat comme celui-ci
mais selon le concept de Lazy Execution, il charge les données lorsqu'il atteint la méthode foreach, alors pourquoi les données sont-elles déjà chargées et visibles dans le débogueur? Suis-je manquant quelque chose vers la compréhension Évaluation paresseux MISE À JOUR 1 Selon la précédente concernant ma capture d'écran, si vous cliquez sur "Résultats vue" forcé de charger les données alors, voici mon deuxième scenerio où je viens de charger les données, ce qui peut être vu former la capture d'écran
mais lorsque le débogueur passe à l'élément suivant, le nombre augmente.
n'est-ce pas supposé charger les données quand un appel est fait en utilisant un foreach? Aidez-moi à comprendre comment fonctionne l'évaluation paresseuse. Je vous remercie.
Le code que vous avez cité dans votre question ne ressemble en rien la capture d'écran vous avez montré. S'il vous plaît fournir un [mcve], et montrer la sortie de * cela * (qui peut juste être texte à nouveau - il n'y a pas besoin d'une capture d'écran du tout) –
ok, juste une seconde ... merci pour l'aide –
'Concat' ne modifie pas 'numbers', il * renvoie * une nouvelle liste qui est modifiée. Vous voulez probablement, 'result = numbers.Concat (num2);' à la place de 'numbers.Concat (num2);'. – Quantic