Правильно, теперь вы изменили вопрос, это имеет смысл. Вы изменяете переменную, используемую в замыкании, что может привести к неожиданным результатам:
var now = new DateTime(1970, 1, 1);
var dates = new List<DateTime>();
var query = dates.Where(d => d > now);
...
now = new DateTime(1990, 1, 1);
foreach (DateTime date in query)
{
// This will only see dates after 1990, not after 1970
// This would confuse many developers.
}
На самом деле, вопрос не только в том, когда начинается запрос - вы можете изменить его , повторяя результаты :
var now = new DateTime(1970, 1, 1);
var dates = new List<DateTime>();
var query = dates.Where(d => d > now);
...
foreach (DateTime date in query)
{
now = date;
Console.WriteLine(date);
}
Это даст строго возрастающую последовательность дат ... опять же, несколько запутанно.
R # абсолютно правильно предупредить об этом, ИМО. иногда может быть полезным, но его следует использовать с большой осторожностью.