Junior — Middle
Môžete vysvetliť koncept odloženého inicializácie výsledkov v LINQ a ako funguje?
sobes.tech AI
Odpoveď od AI
V LINQ (Language Integrated Query) v C# sa využíva koncept odloženého (lenivého) inicializovania alebo odloženého vykonávania dopytov. To znamená, že samotný dopyt na kolekcii sa nevykonáva v momente jeho deklarácie, ale až keď sa k výsledku pristupuje, napríklad pri prechádzaní v cykle alebo volaní metód, ktoré vyžadujú materializáciu (napríklad ToList(), ToArray()).
Odložené vykonávanie umožňuje:
- Optimalizovať výkon, pretože dopyty sa nevykonávajú zbytočne.
- Vytvárať zložité reťazce dopytov, ktoré budú vykonané v jednom prechode.
Príklad:
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Dopyt je deklarovaný, ale nie je vykonaný
foreach(var num in query) // Tu sa dopyt vykoná
{
Console.WriteLine(num); // Vypíše 4 a 5
}
Ak zmeníme kolekciu numbers po deklarácii dopytu, ale pred jeho vykonaním, výsledok sa zmení, pretože dopyt sa vykonáva presne v momente prechodu.