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 след обявяването на заявката, но преди нейното изпълнение, резултатът ще се промени, тъй като заявката се изпълнява точно в момента на обхождането.