Почему это не конец, а счет?
Как вы перечисляете пустой диапазон, если у вас есть начальная и конечная точки? Например, предположим, что у вас есть текстовый буфер на экране и выделение, и выделение состоит из одного символа, начинающегося с символа 12 и заканчивающегося с символа 12. Как вы перечисляете этот диапазон? Вы перечисляете один символ, начиная с символа 12.
Теперь предположим, что выбор состоит из нулевых символов. Как вы перечисляете это? Если у вас есть начало, размер, вы просто передаете ноль для размера. Если у вас есть начало, конец, что вы делаете? Вы не можете пройти 12 и 12.
Теперь вы можете сказать: «Ну, просто не перечисляйте его, если это пустой диапазон». В итоге вы получаете код, который должен выглядеть следующим образом:
var results = from index in Range(selectionStart, selectionSize)
where blah blah blah
select blah;
и вместо этого писать
IEnumerable<Chicken> results = null;
if (selectionSize == 0)
{
results = Enumerable.Empty<Chicken>();
}
else
{
results = from index in Range(selectionStart, selectionEnd)
where blah blah blah
select blah;
}
что ранит мои глаза.