Посмотрите на C# ссылка на " за ": http://msdn.microsoft.com/en-us/library/ch45axte.aspx
в частности:
в разделе итератора определяет, что происходит после каждой итерации тела цикла. Раздел итератора содержит ноль или более из следующих выражений заявления, разделенных запятые:
- оператор присваивания
- вызова из
- выражения префикса или приращения постфиксного метода, например, ++ я или я ++
- префикса или постфикса декремент выражения, такие как --i или i--
- создание объекта с помощью нового
- ждут выражение:
Выражение: "(asc == true)? я ++: i--»не является ни одна из этих вещей
Таким образом, вы хотите назначение:. I + = (? возрастанию 1: -1)
for (int i = ((asc) ? 0 : calendar.Length - 1);
((asc) ? i < calendar.Length : i >= 0);
i += (asc) ? 1 : -1)
Кстати, как отметил в комментарии , вы, вероятно, захотите посмотреть на индекс 0 в условии, поэтому ваш оператор условия в «нисходящем» случае должен быть i> = 0 (отражен в коде).
Хороший лорд, который трудно читать – Jonesopolis
* Почему * вы пытаетесь сделать две петли в одну? И почему вы сравниваете с «истинным», а не просто используете 'asc' в качестве условия? В основном вы пытаетесь злоупотреблять условным оператором ... –
Я был бы очень расстроен, если бы увидел этот код в производстве. Просто используйте «Обратный» ради добра. – BradleyDotNET