У меня есть этот цикл:
for (int i = 1; i < 10; i++)
Но вместо этого я хотел бы, чтобы я просто для чисел 1,2,4,5 и 7, и я буду жестко кодировать это.
Есть ли способ, которым я могу сделать это с чем-то вроде массива?
У меня есть этот цикл:
for (int i = 1; i < 10; i++)
Но вместо этого я хотел бы, чтобы я просто для чисел 1,2,4,5 и 7, и я буду жестко кодировать это.
Есть ли способ, которым я могу сделать это с чем-то вроде массива?
Ответы:
Вы можете использовать массив, чтобы дать номера, которые вы хотите, как это
int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
Console.WriteLine(i);
Или сделать это встроенным, что не так чисто, когда список значений растет, на мой взгляд
foreach(int i in new int[] {1,2,4,5,7})
Console.WriteLine(i);
intобъявление, так как компилятор определит его по содержимому.
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{
}
В основном ответы здесь верны, просто потому, что вы явно запросили forвместо foreachцикла:
int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
Console.WriteLine(loop[i]);
}
Если вы хотите, особенно для цикла, то пойти с этим:
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]);
}
Очевидно, что правильным ответом для общего случая является использование foreachили индексированный поиск, как показано в других ответах, но только для полноты:
Вы можете использовать любое выражение в forвыражении, включая условные выражения. Имея это в виду, легко построить условное приращение или даже полное условное условие (конечный автомат?) Для требуемого набора:
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
Или даже что-то действительно глупое, как поиск по самоиндексированию:
for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
Console.Write(i);
}
// Output: 12457