Tôi đã bắt gặp câu hỏi này một giây trước và tôi đang rút một số tài liệu ra khỏi đó: Có tên nào cho cấu trúc 'break n' không?
Đây dường như là một cách phức tạp không cần thiết để mọi người phải hướng dẫn chương trình thoát ra khỏi vòng lặp lồng nhau kép:
for (i = 0; i < 10; i++) {
bool broken = false;
for (j = 10; j > 0; j--) {
if (j == i) {
broken = true;
break;
}
}
if (broken)
break;
}
Tôi biết sách giáo khoa muốn nói các tuyên bố goto là ma quỷ, và bản thân tôi không thích chúng, nhưng điều này có biện minh cho một ngoại lệ cho quy tắc này không?
Tôi đang tìm kiếm câu trả lời liên quan đến n-lồng cho các vòng lặp.
LƯU Ý: Cho dù bạn trả lời có, không, hoặc ở đâu đó ở giữa, các câu trả lời hoàn toàn gần gũi đều không được chào đón. Đặc biệt nếu câu trả lời là không, thì hãy cung cấp một lý do chính đáng, hợp lý tại sao (điều này không quá xa so với quy định của Stack Exchange).
goto
: goto (Tham chiếu C #) - "Câu lệnh goto cũng hữu ích để thoát khỏi các vòng lặp lồng nhau sâu sắc."
goto
thực sự được yêu cầu trong một chuyển đổi C # để chuyển sang trường hợp khác sau khi thực hiện bất kỳ mã nào trong trường hợp đầu tiên. Đó là trường hợp duy nhất tôi đã sử dụng goto, mặc dù.
for (j = 10; j > 0 && !broken; j--)
thì bạn sẽ không cầnbreak;
câu lệnh. Nếu bạn di chuyển khai báobroken
đến trước khi vòng lặp bên ngoài bắt đầu, thì nếu điều đó có thể được viết như vậyfor (i = 0; i < 10 && !broken; i++)
thì tôi nghĩ khôngbreak;
cần thiết.