ฉันมีวงนี้:
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