Sobes.tech
Junior — Middle

Можете ли да објасните концепт одложене иницијализације резултата у LINQ-у и како он ради?

sobes.tech АИ

Одговор од АИ

U LINQ (Language Integrated Query) u C# koristi se koncept odložene (lenje) inicijalizacije ili odložene izvršnosti upita. To znači da sam upit na kolekciji nije izvršen u trenutku njegovog deklarisanja, već tek kada se pristupi rezultatu, na primer, tokom prolaska u petlji ili pozivanjem metoda koji zahtevaju materializaciju (npr. ToList(), ToArray()).

Odložena izvršnost omogućava:

  • Optimizaciju performansi, jer se upiti ne izvršavaju nepotrebno.
  • Sastavljanje složenih lanaca upita koji će biti izvršeni u jednom prolazu.

Primer:

var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Upit je deklarisan, ali ne i izvršen

foreach(var num in query) // Ovde se izvršava upit
{
    Console.WriteLine(num); // Ispisaće 4 i 5
}

Ako promenimo kolekciju numbers nakon deklarisanja upita, ali pre njegovog izvršenja, rezultat će se promeniti, jer se upit izvršava tačno u trenutku prolaska.