2013-07-29 4 views
-6

Есть ли другой способ для достижения следующего результата? (Без использования если)Выражение для разделения последней итерации цикла for

static void Main(string[] args) 
    { 
     int n = 16; 
     Action[] action = new Action[2] { go0, go1 }; 
     for (int i = 1; i < n + 1; i++) 
     { 
      Console.Write(i - 1); 
      action[((i % (n)) % (i + 1))/i](); 
      //Console.Write(((i % (n)) % (i + 1))/i); 
     } 
     Console.ReadLine(); 
    } 

    static void go0() { Console.Write("-"); } 
    static void go1() { Console.Write("|"); } 

EDIT:

хорошо я постараюсь быть более конкретным. Моя реальная проблема связана с графикой.

Я пытаюсь сделать сетку белых прямоугольников и разделителей строк между ними. Поэтому, когда я вхожу в цикл для рисования каждого прямоугольника, я также рисую правую сторону каждого прямоугольника другим цветом, чтобы сделать разделитель отличным.

Но когда я прихожу к последнему прямоугольнику, я не хочу рисовать его правую сторону. Чтобы преодолеть это, я обнаружил, что этот подход может работать, если первый метод рисует разделитель, а второй метод ничего не рисует.

(Я не программист, поэтому мне сложно выразить себя, когда речь идет о программировании).

+2

ли это [код гольф] (http://codegolf.stackexchange.com/) или реальная проблема? –

+3

Пожалуйста, используйте 'if'. Я бы не хотел поддерживать такой код, даже как удар в аду. – dmay

+1

Если вы повторяете слишком много, не можете ли вы просто настроить условие цикла? Подобно 'i = 1; i Zec

ответ

4

В основном я хочу, чтобы пропустить последний элемент контура

for (int i = 1; i < n; i++) 
// ... 
Смежные вопросы