Самый простой подход - использовать вместо этого индексатор:
for (int i = 0; i < cmp.Count; i++)
{
var cm = cmp[i];
if (i == cmp.Count - 1)
{
// Handle the last value differently
}
}
В качестве альтернативы можно использовать что-то вроде "умного перечисления" из MiscUtil ,который позволяет вам использовать цикл foreach
, но при этом обращаться к «первым», «последним» и «индексам» для каждой записи.С C # 3 это на самом деле несколько проще в использовании, чем код в этом посте:
foreach (var entry in SmartEnumerable.Create(cmp))
{
var cm = entry.Value;
if (entry.IsLast)
{
...
}
}
(Кроме того, tc
- это нечетное имя пространства имен ...)
EDIT: Обратите внимание, что проверка того, является ли ваш текущий элемент равным , последний элемент в списке - , а не , является надежным признаком того, что вы в данный момент находитесь на последней итерации.Это будет работать, только если список содержит отдельные элементы.Оба приведенных выше подхода действительно сообщают вам, находитесь ли вы на последней итерации, что, как я и предполагал, вы хотели.