Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

В LINQ (Language Integrated Query) в C# се използва концепцията за отложена (ленива) инициализация или отложено изпълнение на заявки. Това означава, че самата заявка към колекцията не се изпълнява в момента на нейното обявяване, а само когато се достъпва резултатът, например при обхождане в цикъл или при извикване на методи, които изискват материализация (например ToList(), ToArray()).

Отложеното изпълнение позволява:

  • Оптимизиране на производителността, тъй като заявките не се изпълняват без нужда.
  • Създаване на сложни вериги от заявки, които ще бъдат изпълнени с един проход.

Пример:

var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Заявката е обявена, но не е изпълнена

foreach(var num in query) // Тук се изпълнява заявката
{
    Console.WriteLine(num); // Ще изведе 4 и 5
}

Ако променим колекцията numbers след обявяването на заявката, но преди нейното изпълнение, резултатът ще се промени, тъй като заявката се изпълнява точно в момента на обхождането.