0Pricing
C# Academy · บทเรียน

การวนซ้ำค่าของ Enum

แจกแจงสมาชิกทั้งหมดด้วย Enum.GetValues

การวนซ้ำค่าของ Enum เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน

การแสดงรายการสมาชิกอีนัม

บางครั้งคุณจำเป็นต้องใช้ค่าทุกค่าของอีนัม เช่น เพื่อสร้างเมนู Enum.GetValues จะจัดเตรียมค่าเหล่านั้นให้

using System;

enum Day { Mon, Tue, Wed }
class Program {
    static void Main() {
        foreach (Day d in Enum.GetValues<Day>())
            Console.WriteLine(d);
    }
}

GetValues แบบเจเนอริก

Enum.GetValues<T>() แบบเจเนอริกจะส่งคืนอาร์เรย์ที่มีชนิดข้อมูลชัดเจน ซึ่งคุณสามารถวนซ้ำได้โดยตรง

using System;

enum Color { Red, Green, Blue }
class Program {
    static void Main() {
        Color[] all = Enum.GetValues<Color>();
        Console.WriteLine(all.Length);
    }
}

การรับชื่อสมาชิก

Enum.GetNames<T>() จะส่งคืนชื่อสมาชิกในรูปแบบสตริง

using System;

enum Color { Red, Green, Blue }
class Program {
    static void Main() {
        foreach (string name in Enum.GetNames<Color>())
            Console.WriteLine(name);
    }
}

ชื่อและค่าพร้อมกัน

วนซ้ำค่าต่าง ๆ แล้วแปลงเป็น int เพื่อพิมพ์ทั้งชื่อและตัวเลขพื้นฐาน

using System;

enum Color { Red = 1, Green = 2, Blue = 4 }
class Program {
    static void Main() {
        foreach (Color c in Enum.GetValues<Color>())
            Console.WriteLine(c + " = " + (int)c);
    }
}

การนับสมาชิก

ความยาวของอาร์เรย์ค่าจะบอกว่าชนิดแจกแจงมีสมาชิกอยู่กี่รายการ

using System;

enum Suit { Hearts, Diamonds, Clubs, Spades }
class Program {
    static void Main() {
        int count = Enum.GetValues<Suit>().Length;
        Console.WriteLine(count);
    }
}

การสร้างเมนู

การวนซ้ำค่าต่าง ๆ เหมาะอย่างยิ่งสำหรับพิมพ์รายการตัวเลือกที่มีหมายเลขกำกับ

using System;

enum Option { Start, Settings, Quit }
class Program {
    static void Main() {
        int i = 1;
        foreach (Option o in Enum.GetValues<Option>())
            Console.WriteLine(i++ + ") " + o);
    }
}

การกรองระหว่างวนซ้ำ

คุณสามารถข้ามสมาชิกบางรายการได้ เช่น ค่าพิเศษที่หมายถึงไม่มีค่า ระหว่างการวนซ้ำ

using System;

enum State { None, Active, Closed }
class Program {
    static void Main() {
        foreach (State s in Enum.GetValues<State>())
            if (s != State.None)
                Console.WriteLine(s);
    }
}

การวนซ้ำด้วย LINQ

ผสาน Enum.GetValues เข้ากับ LINQ เพื่อกรองหรือแปลงข้อมูล

using System;
using System.Linq;

enum Level { Low = 1, Medium = 2, High = 3 }
class Program {
    static void Main() {
        var highOnes = Enum.GetValues<Level>().Where(l => (int)l >= 2);
        foreach (var l in highOnes) Console.WriteLine(l);
    }
}

รูปแบบที่ไม่ใช่เจเนอริกรุ่นเก่า

ก่อนมีเจเนอริก คุณจะใช้ Enum.GetValues(typeof(T)) ซึ่งส่งคืนอาร์เรย์ที่ไม่มีชนิดข้อมูลเฉพาะ

using System;

enum Color { Red, Green, Blue }
class Program {
    static void Main() {
        foreach (Color c in Enum.GetValues(typeof(Color)))
            Console.WriteLine(c);
    }
}

แฟล็กและการวนซ้ำ

สำหรับชนิดแจกแจงแบบแฟล็ก การวนซ้ำจะแสดงแฟล็กแต่ละรายการ รวมถึงสมาชิกแบบรวมที่สะดวกใช้งานด้วย ดังนั้นให้กรองหากจำเป็น

using System;

[Flags]
enum Perm { Read = 1, Write = 2, Execute = 4 }
class Program {
    static void Main() {
        foreach (Perm p in Enum.GetValues<Perm>())
            Console.WriteLine(p + " = " + (int)p);
    }
}

เหตุผลที่ควรวนซ้ำชนิดแจกแจง

การวนซ้ำช่วยให้ส่วนติดต่อผู้ใช้และการตรวจสอบสอดคล้องกับชนิดแจกแจงอยู่เสมอ เมื่อเพิ่มสมาชิก การวนซ้ำก็จะรวมสมาชิกนั้นโดยอัตโนมัติ

using System;

enum Size { Small, Medium, Large }
class Program {
    static void Main() {
        foreach (Size s in Enum.GetValues<Size>())
            Console.WriteLine("Available: " + s);
    }
}

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับการวนซ้ำชนิดแจกแจง

สรุปทบทวน

Enum.GetValues<T>() จะส่งคืนสมาชิกทุกตัวเป็นอาร์เรย์ที่มีชนิดข้อมูล และ Enum.GetNames<T>() จะส่งคืนชื่อของสมาชิกเหล่านั้น คุณสามารถวนซ้ำเพื่อพิมพ์ชื่อพร้อมค่าตัวเลข นับสมาชิก สร้างเมนู หรือกรองด้วย LINQ ได้

การวนซ้ำช่วยให้เมนูและการตรวจสอบสอดคล้องกันโดยอัตโนมัติเมื่อชนิดแจกแจงมีสมาชิกเพิ่มขึ้น

คำถามที่พบบ่อย

บทเรียน “การวนซ้ำค่าของ Enum” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การวนซ้ำค่าของ Enum” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การวนซ้ำค่าของ Enum”

แจกแจงสมาชิกทั้งหมดด้วย Enum.GetValues คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การวนซ้ำค่าของ Enum” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดและใช้งาน Enum
  2. Enum แบบ Flags และการรวมค่าระดับบิต
  3. การแปลงและแยกวิเคราะห์ Enum
  4. การวนซ้ำค่าของ Enum
← กลับไปที่ C# Academy