Что выведет код?
using System;
using System.Collections.Generic;
using System.Linq;
static IEnumerable GetNumbers()
{
Console.Write("A");
yield return 1;
Console.Write("B");
yield return 2;
}
var query = GetNumbers().Where(x => x > 0);
Console.Write(query.First());
Console.Write(query.Count());
А — A12
Б — A1B2
В — A1AB2
Г — Error
Правильный ответ: В — A1AB2.
Почему: IEnumerable и LINQ выполняются лениво. First() запускает перебор один раз и доходит только до первого элемента: печатает A, потом 1. Count() запускает перебор заново: снова A, потом B, и в конце печатает 2.
using System;
using System.Collections.Generic;
using System.Linq;
static IEnumerable GetNumbers()
{
Console.Write("A");
yield return 1;
Console.Write("B");
yield return 2;
}
var query = GetNumbers().Where(x => x > 0);
Console.Write(query.First());
Console.Write(query.Count());
А — A12
Б — A1B2
В — A1AB2
Г — Error
Правильный ответ: В — A1AB2.
Почему: IEnumerable и LINQ выполняются лениво. First() запускает перебор один раз и доходит только до первого элемента: печатает A, потом 1. Count() запускает перебор заново: снова A, потом B, и в конце печатает 2.