У мене є ця петля:
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