J'ai cette boucle:
for (int i = 1; i < 10; i++)
Mais à la place, j'aimerais avoir i pour les numéros 1, 2, 4, 5 et 7 et je coderai cela en dur.
Existe-t-il un moyen de le faire avec quelque chose comme un tableau?
J'ai cette boucle:
for (int i = 1; i < 10; i++)
Mais à la place, j'aimerais avoir i pour les numéros 1, 2, 4, 5 et 7 et je coderai cela en dur.
Existe-t-il un moyen de le faire avec quelque chose comme un tableau?
Réponses:
Vous pouvez utiliser un tableau pour donner les chiffres que vous voulez comme ceci
int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
Console.WriteLine(i);
Ou faites-le en ligne, ce qui n'est pas aussi propre lorsque la liste des valeurs s'allonge à mon avis
foreach(int i in new int[] {1,2,4,5,7})
Console.WriteLine(i);
int
déclaration, car le compilateur le déterminera à partir du contenu.
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{
}
Fondamentalement, les réponses ici sont correctes, simplement parce que vous avez demandé explicitement un for
au lieu d'une foreach
boucle:
int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
Console.WriteLine(loop[i]);
}
Si vous voulez particulièrement une boucle, allez avec ceci:
var list = new List<int>() { 1, 2, 4, 5, 7 };
for (int i = 0; i < list.Count; i++) // Loop through List with for
{
Console.WriteLine(list[i]);
}
Évidemment, la bonne réponse pour le cas général est d'utiliser foreach
ou une recherche indexée comme indiqué dans les autres réponses, mais juste pour être complet:
Vous pouvez utiliser n'importe quelle instruction dans une for
expression, y compris les conditions. Dans cet esprit, il est facile de construire un incrément conditionnel ou même un conditionnel exhaustif (machine d'état?) Pour un ensemble requis:
for (int i = 1; i <= 7; i += (i == 5 || i == 2) ? 2 : 1)
{
Console.Write(i);
}
// Output: 12457
for (int i = 1; i > 0; i = i switch {1=>2, 2=>4, 4=>5, 5=>7, 7=>-1})
{
Console.Write(i);
}
// Output: 12457
Ou même quelque chose de vraiment idiot comme une recherche auto-indexée:
for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
Console.Write(i);
}
// Output: 12457