Junior — Middle
Kunt u het concept van uitgestelde resultaatinitialisatie in LINQ uitleggen en hoe het werkt?
sobes.tech AI
Antwoord van AI
In LINQ (Language Integrated Query) in C# wordt het concept van lazy (luiwe) initialisatie of deferred uitvoering van query's gebruikt. Dit betekent dat de query zelf op de collectie niet wordt uitgevoerd op het moment van declaratie, maar pas wanneer het resultaat wordt benaderd, bijvoorbeeld bij het doorlopen in een lus of het aanroepen van methoden die materialisatie vereisen (bijvoorbeeld ToList(), ToArray()).
Deferred uitvoering maakt het mogelijk:
- De prestaties te optimaliseren, omdat query's niet onnodig worden uitgevoerd.
- Complexe query-ketens te bouwen die in één keer worden uitgevoerd.
Voorbeeld:
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Query gedeclareerd, maar niet uitgevoerd
foreach(var num in query) // Hier wordt de query uitgevoerd
{
Console.WriteLine(num); // Drukt 4 en 5 af
}
Als we de collectie numbers wijzigen na de declaratie van de query, maar vóór de uitvoering, zou het resultaat veranderen, omdat de query precies op het moment van iteratie wordt uitgevoerd.