Enum (Enumeration) คือ Value Type ที่กำหนดชุดค่าคงที่มีชื่อ (Named Constants) เช่น วัน, เดือน, สถานะ, สี
Syntax
enum EnumName
{
Value1,
Value2,
Value3 = 10, // กำหนดค่าเองได้
Value4 // 11 (Auto Increment)
}
ตัวอย่างพื้นฐาน
using System;
public class Demo
{
public enum Vehicle { Car, Bus, Truck }
public static void Main()
{
int a = (int)Vehicle.Car; // 0
int b = (int)Vehicle.Bus; // 1
int c = (int)Vehicle.Truck; // 2
Console.WriteLine("Car = {0}", a);
Console.WriteLine("Bus = {0}", b);
Console.WriteLine("Truck = {0}", c);
}
}
คุณสมบัติสำคัญ
- ค่าเริ่มต้น: 0, 1, 2, ... (Auto Increment)
- Underlying Type:
int(Default) สามารถเปลี่ยนได้:enum Color : byte - Type Safety:
Vehicle v = 5;❌ Error, ต้อง Cast - Flags Attribute: สำหรับ Bitwise Combination
เมธอด Enum ที่ใช้บ่อย
| เมธอด | คำอธิบาย |
|---|---|
Enum.GetNames<T>() | Array ของชื่อทั้งหมด |
Enum.GetValues<T>() | Array ของค่าทั้งหมด |
Enum.IsDefined<T>(value) | ตรวจสอบว่ามีค่านี้ใน Enum |
Enum.Parse<T>(string) | แปลง String เป็น Enum |
Enum.TryParse<T>(string, out) | Parse อย่างปลอดภัย |
value.ToString() | ชื่อของ Enum Value |
ตัวอย่าง Flags Enum
[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Execute = 4,
All = Read | Write | Execute // 7
}
Permissions p = Permissions.Read | Permissions.Write;
Console.WriteLine(p); // "Read, Write"
Console.WriteLine((int)p); // 3