Tôi có vòng lặp này:
for (int i = 1; i < 10; i++)
Nhưng thay vào đó tôi muốn có i chỉ với số 1,2,4,5 và 7 và tôi sẽ mã hóa cứng này.
Có cách nào tôi có thể làm điều này với một cái gì đó như một mảng không?
Tôi có vòng lặp này:
for (int i = 1; i < 10; i++)
Nhưng thay vào đó tôi muốn có i chỉ với số 1,2,4,5 và 7 và tôi sẽ mã hóa cứng này.
Có cách nào tôi có thể làm điều này với một cái gì đó như một mảng không?
Câu trả lời:
Bạn có thể sử dụng một mảng để đưa ra những con số bạn muốn như thế này
int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
Console.WriteLine(i);
Hoặc làm nó nội tuyến không sạch sẽ khi danh sách các giá trị tăng theo ý kiến của tôi
foreach(int i in new int[] {1,2,4,5,7})
Console.WriteLine(i);
intkhai báo, vì trình biên dịch sẽ xác định điều đó từ nội dung.
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{
}
Về cơ bản các câu trả lời ở đây là chính xác, chỉ vì bạn đã hỏi rõ ràng forthay vì một foreachvòng lặp:
int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
Console.WriteLine(loop[i]);
}
Nếu bạn muốn đặc biệt cho vòng lặp thì hãy đi với điều này:
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]);
}
Rõ ràng câu trả lời đúng cho trường hợp chung là sử dụng foreachhoặc tra cứu được lập chỉ mục như thể hiện trong các câu trả lời khác, nhưng chỉ vì sự hoàn chỉnh:
Bạn có thể sử dụng bất kỳ câu lệnh nào trong một forbiểu thức, bao gồm cả các điều kiện. Với ý nghĩ đó, thật dễ dàng để xây dựng một mức tăng có điều kiện hoặc thậm chí là một điều kiện đầy đủ (máy trạng thái?) Cho một tập hợp bắt buộc:
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
Hoặc thậm chí một cái gì đó thực sự ngớ ngẩn như một tra cứu tự lập chỉ mục:
for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
Console.Write(i);
}
// Output: 12457