Bu döngü var:
for (int i = 1; i < 10; i++)
Ama bunun yerine sadece 1,2,4,5 ve 7 sayıları için i'ye sahip olmak istiyorum ve bunu kodlayacağım.
Bunu bir dizi gibi bir şeyle yapabilmemin bir yolu var mı?
Bu döngü var:
for (int i = 1; i < 10; i++)
Ama bunun yerine sadece 1,2,4,5 ve 7 sayıları için i'ye sahip olmak istiyorum ve bunu kodlayacağım.
Bunu bir dizi gibi bir şeyle yapabilmemin bir yolu var mı?
Yanıtlar:
İstediğiniz sayıları vermek için bir dizi kullanabilirsiniz
int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
Console.WriteLine(i);
Ya da bence değerler listesi büyüdüğünde satır içi değil mi?
foreach(int i in new int[] {1,2,4,5,7})
Console.WriteLine(i);
int, derleyiciyi içerikten belirleyeceği için bildirimi kaldırabilirsiniz .
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{
}
Temel olarak buradaki yanıtlar doğrudur, çünkü forbir foreachdöngü yerine açıkça istediniz :
int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
Console.WriteLine(loop[i]);
}
Özellikle döngü için istiyorsanız o zaman bu ile gitmek:
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]);
}
Açıkçası genel durum için doğru cevap foreach, diğer cevaplarda gösterildiği gibi kullanmak veya endeksli bir aramadır, ancak sadece tamlık uğruna:
Koşullar dahil bir ifadedeki herhangi bir forifadeyi kullanabilirsiniz . Bunu göz önünde bulundurarak, gerekli bir set için koşullu bir artış veya hatta kapsamlı bir koşul (durum makinesi?) Oluşturmak kolaydır :
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
Ya da kendini indeksleme araması gibi gerçekten aptalca bir şey bile:
for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
Console.Write(i);
}
// Output: 12457