Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การใช้ Break Statement ใน While Loop C#

ภาพรวม

คำสั่ง 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 > 15Break?
1101011Falseไม่
2111112Falseไม่
3121213Falseไม่
4131314Falseไม่
5141415Falseไม่
6151516Trueใช่ - ออกจากลูป

สังเกต: ค่า 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