El segundo es más limpio para mí: la matriz solo tiene alcance durante el ciclo. Además, para que sea realmente "limpio", puede eliminar la intdeclaración, ya que el compilador lo determinará a partir de los contenidos.
Obviamente, la respuesta correcta para el caso general es usar foreacho una búsqueda indexada como se muestra en las otras respuestas, pero solo por completo:
Puede usar cualquier declaración dentro de una forexpresión, incluidos los condicionales. Con eso en mente, es fácil construir un incremento condicional o incluso un condicional exhaustivo (¿máquina de estado?) Para un conjunto requerido:
for(int i =1; i <=7; i +=(i ==5|| i ==2)?2:1){Console.Write(i);}// Output: 12457for(int i =1; i >0; i = i switch{1=>2,2=>4,4=>5,5=>7,7=>-1}){Console.Write(i);}// Output: 12457
O incluso algo realmente tonto como una búsqueda de auto indexación:
for(int i =1; i >0; i =new[]{0,2,4,0,5,7,0,-1}[i]){Console.Write(i);}// Output: 12457
Respuestas:
Podrías usar una matriz para dar los números que quieres así
O hágalo en línea, lo que no es tan limpio cuando la lista de valores crece en mi opinión
fuente
int
declaración, ya que el compilador lo determinará a partir de los contenidos.fuente
Básicamente, las respuestas aquí son correctas, solo porque solicitó explícitamente
for
unforeach
bucle en lugar de un bucle:https://dotnetfiddle.net/c5yjPe
fuente
Si desea particularmente para el bucle, vaya con esto:
fuente
Obviamente, la respuesta correcta para el caso general es usar
foreach
o una búsqueda indexada como se muestra en las otras respuestas, pero solo por completo:Puede usar cualquier declaración dentro de una
for
expresión, incluidos los condicionales. Con eso en mente, es fácil construir un incremento condicional o incluso un condicional exhaustivo (¿máquina de estado?) Para un conjunto requerido:O incluso algo realmente tonto como una búsqueda de auto indexación:
fuente