Ich habe diese Schleife:
for (int i = 1; i < 10; i++)
Aber stattdessen möchte ich i nur für die Nummern 1,2,4,5 und 7 haben und ich werde dies fest codieren.
Gibt es eine Möglichkeit, dies mit so etwas wie einem Array zu tun?
Ich habe diese Schleife:
for (int i = 1; i < 10; i++)
Aber stattdessen möchte ich i nur für die Nummern 1,2,4,5 und 7 haben und ich werde dies fest codieren.
Gibt es eine Möglichkeit, dies mit so etwas wie einem Array zu tun?
Antworten:
Sie können ein Array verwenden, um die gewünschten Zahlen wie folgt anzugeben
int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
Console.WriteLine(i);
Oder machen Sie es inline, was meiner Meinung nach nicht so sauber ist, wenn die Liste der Werte wächst
foreach(int i in new int[] {1,2,4,5,7})
Console.WriteLine(i);
intDeklaration auch entfernen , da der Compiler dies aus dem Inhalt bestimmt.
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{
}
Grundsätzlich sind die Antworten hier richtig, nur weil Sie explizit nach a gefragt haben for statt einer foreachSchleife :
int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
Console.WriteLine(loop[i]);
}
Wenn Sie speziell für Schleife wollen, dann gehen Sie mit diesem:
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]);
}
Offensichtlich die richtige Antwort für den allgemeinen Fall zu verwendenforeach oder eine indizierte Suche, wie in den anderen Antworten gezeigt, aber nur der Vollständigkeit halber:
Sie können jede Anweisung innerhalb eines forAusdrucks verwenden, einschließlich Bedingungen. In diesem Sinne ist es einfach, ein bedingtes Inkrement oder sogar ein erschöpfendes zu erstellen Bedingung (Zustandsmaschine?) Für einen erforderlichen Satz :
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
Oder sogar etwas wirklich Dummes wie eine selbstindizierende Suche:
for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
Console.Write(i);
}
// Output: 12457