C # для цикла с уже определенным итератором

#c#

#c#

Вопрос:

Я хочу создать цикл, используя уже определенный итератор.

В настоящее время я использую

 int i;
while (i<10)
{
    Console.Writeline(i);
    i  ;
}
  

Это некрасиво, потому что кто-то другой может позже удалить i . Если он отделен от оператора while большим блоком кода, будет неясно, для чего он предназначен.

Чего бы мне действительно хотелось, так это чего-то вроде

 int i;
for (i<10; i  )
{
    Console.Writeline(i);
}
  

Это дает понять, что происходит, но это недопустимый C #.

Лучшее, что я придумал до сих пор, это

 int i;
for (int z; i<10; i  )
{
    Console.Writeline(i);
}
  

Но это некрасиво. Дает ли C # мне элегантный способ сделать это?

Ответ №1:

Ну, вам не обязательно иметь что-либо внутри первой части цикла:

 for (; i < 10; i  )
{
    Console.WriteLine(i);
}
  

Это то, что вы ищете? Лично я обычно стараюсь избегать подобных ситуаций в любом случае — я нахожу довольно необычным хотеть цикл без новой переменной.

Комментарии:

1. И для дополнительного минимализма попробуйте for (;;) использовать бесконечный цикл (вместо while (true) ).

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

Ответ №2:

Просто используйте пустую первую часть «for»:

 int i;
for (; i<10; i  )
{
    Console.Writeline(i);
}
  

Ответ №3:

Вы также можете присвоить переменной самой себе в первой части цикла следующим образом:

 int i;
for (i=i; i<10; i  )
{
    Console.Writeline(i);
}
  

Я нахожу, что это немного понятнее, чем оставлять первую часть цикла пустой, однако Visual Studio выдаст вам предупреждение «Присвоение, выполненное той же переменной; вы имели в виду присвоить его чему-то другому?»