ภาพรวม
คำสั่ง break ใช้เพื่อ ออกจากลูปทันที และกระโดดไปทำงานที่คำสั่งถัดไปหลังลูป ทำงานได้กับ while, for, foreach, do-while, และ switch
ตัวอย่าง: Break ใน While Loop
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
int a = 10;
// While loop ปกติ: ทำงานจน a >= 20
while (a < 20)
{
Console.WriteLine("ค่าของ a: {0}", a);
a++;
// หาก a มากกว่า 15 ให้ออกจากลูปทันที
if (a > 15)
{
break; // จบ while loop ทันที
}
}
Console.WriteLine("ออกจากลูปแล้ว a = " + a);
Console.ReadLine();
}
}
}ผลลัพธ์
ค่าของ a: 10 ค่าของ a: 11 ค่าของ a: 12 ค่าของ a: 13 ค่าของ a: 14 ค่าของ a: 15 ออกจากลูปแล้ว a = 16
คำอธิบายลำดับการทำงาน
| รอบ | a (ก่อน ++) | พิมพ์ | a (หลัง ++) | ตรวจสอบ a > 15 | Break? |
|---|---|---|---|---|---|
| 1 | 10 | 10 | 11 | False | ไม่ |
| 2 | 11 | 11 | 12 | False | ไม่ |
| 3 | 12 | 12 | 13 | False | ไม่ |
| 4 | 13 | 13 | 14 | False | ไม่ |
| 5 | 14 | 14 | 15 | False | ไม่ |
| 6 | 15 | 15 | 16 | True | ใช่ - ออกจากลูป |
สังเกต: ค่า 16 ไม่ได้ถูกพิมพ์ เพราะ break ทำงานหลัง a++ แตรก่อนกลับไปตรวจสอบ while (a < 20)
Break ใน Nested Loops (ลูปซ้อน)
break ออกจากลูปชั้นในที่สุด (innermost loop) เท่านั้น:
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (j == 1) break; // ออกจาก inner loop เท่านั้น
Console.WriteLine($"i={i}, j={j}");
}
}
// ผลลัพธ์: (0,0), (1,0), (2,0)วิธีออกจาก Outer Loop
// 1. ใช้ Boolean flag
bool stop = false;
for (int i = 0; i < 3 && !stop; i++)
{
for (int j = 0; j < 3; j++)
{
if (j == 1) { stop = true; break; }
}
}
// 2. ใช้ Goto (ไม่แนะนำแต่ทำได้)
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (j == 1) goto ExitLoop;
}
}
ExitLoop: ;
// 3. ใส่ในเมธอดแยกและใช้ return
void Process()
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if (j == 1) return;
}ข้อสังเกตสำคัญ
breakใช้ได้ในswitchเพื่อป้องกัน fall-through- แตกต่างจาก
continueที่ข้ามรอบปัจจุบันไปรอบถัดไป - ใช้
breakเพื่อหยุดค้นหาเมื่อเจอสิ่งที่ต้องการ (Early exit) เพื่อประสิทธิภาพ - หลีกเลี่ยงการใช้
breakมากเกินไปในลูปซับซ้อน - ควร Refactor เป็นเมธอดแยกและใช้return