Sobes.tech
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.