Junior — Middle
El tudná magyarázni a LINQ-ben az eredmények késleltetett inicializációjának fogalmát, és hogy működik?
sobes.tech MI
Válasz az MI-től
A LINQ (Language Integrated Query) C#-ban a késleltetett (lusta) inicializáció vagy a lekérdezések késleltetett végrehajtásának koncepcióját használja. Ez azt jelenti, hogy a kollekcióhoz tartozó lekérdezés nem hajtódik végre a deklarálás pillanatában, hanem csak akkor, amikor az eredményhez hozzáférünk, például ciklusban való végigjárás vagy olyan metódusok hívásakor, amelyek anyagiasítást igényelnek (pl. ToList(), ToArray()).
A késleltetett végrehajtás lehetővé teszi:
- A teljesítmény optimalizálását, mivel a lekérdezések nem futnak szükségtelenül.
- Komplex lekérdezési láncok összeállítását, amelyek egyetlen áthaladással végrehajthatók.
Példa:
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // A lekérdezés deklarálva, de nem végrehajtva
foreach(var num in query) // Itt történik a lekérdezés végrehajtása
{
Console.WriteLine(num); // 4 és 5 fog megjelenni
}
Ha a numbers kollekciót módosítjuk a lekérdezés deklarálása után, de mielőtt végrehajtanánk, az eredmény megváltozik, mivel a lekérdezés pontosan az iteráció pillanatában hajtódik végre.