Junior — Middle
Pouvez-vous expliquer le concept d'initialisation différée des résultats en LINQ et comment cela fonctionne-t-il?
sobes.tech IA
Réponse de l'IA
Dans LINQ (Language Integrated Query) en C#, on utilise le concept d'initialisation différée (paresseuse) ou d'exécution différée des requêtes. Cela signifie que la requête elle-même sur la collection n'est pas exécutée au moment de sa déclaration, mais seulement lorsque le résultat est accédé, par exemple lors de l'itération dans une boucle ou lors de l'appel de méthodes nécessitant une matérialisation (par exemple, ToList(), ToArray()).
L'exécution différée permet de:
- Optimiser les performances, car les requêtes ne sont pas exécutées inutilement.
- Construire des chaînes de requêtes complexes qui seront exécutées en une seule passe.
Exemple:
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // La requête est déclarée, mais pas exécutée
foreach(var num in query) // La requête s'exécute ici
{
Console.WriteLine(num); // Affichera 4 et 5
}
Si nous modifions la collection numbers après la déclaration de la requête, mais avant son exécution, le résultat changerait, car la requête s'exécute au moment de l'itération.