เมธอด Enum.Format(Type enumType, object value, string format) แปลงค่า Enum เป็น String ตามรูปแบบที่ระบุ รองรับ Format Specifiers ต่างๆ
Format Specifiers
| Specifier | คำอธิบาย | ตัวอย่าง (ค่า = 1) |
|---|---|---|
G / g | General (Default) - ชื่อถ้ามี, ไม่มีแสดงตัวเลข | "Keyboard" |
D / d | Decimal - ค่าตัวเลขฐานสิบ | "1" |
X / x | Hexadecimal - ค่าฐานสิบหก (Upper/Lower) | "00000001" / "00000001" |
F / f | Flags - แสดงเป็น Flag Combination (ต้องมี [Flags]) | "Keyboard" |
ตัวอย่าง: Decimal Format
using System;
class Demo
{
enum Stock
{
PenDrive, // 0
Keyboard, // 1
Speakers // 2
}
static void Main()
{
Stock st = Stock.Keyboard;
Console.WriteLine("Product: " + st); // Keyboard (ToString)
Console.WriteLine("Value (Decimal): " + Enum.Format(typeof(Stock), st, "d")); // 1
Console.WriteLine("Value (Hex): " + Enum.Format(typeof(Stock), st, "x")); // 00000001
Console.WriteLine("General: " + Enum.Format(typeof(Stock), st, "g")); // Keyboard
}
}
ผลลัพธ์
Product: Keyboard Value (Decimal): 1 Value (Hex): 00000001 General: Keyboard
การใช้งานกับ Flags Enum
[Flags]
enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Execute = 4
}
Permissions p = Permissions.Read | Permissions.Execute; // 5
Console.WriteLine(Enum.Format(typeof(Permissions), p, "g")); // Read, Execute
Console.WriteLine(Enum.Format(typeof(Permissions), p, "f")); // Read, Execute
Console.WriteLine(Enum.Format(typeof(Permissions), p, "d")); // 5
Console.WriteLine(Enum.Format(typeof(Permissions), p, "x")); // 00000005
สรุป
Enum.Formatให้การควบคุมรูปแบบ Output ได้ละเอียดToString()หรือEnum.Format(..., "g")ให้ผลลัพธ์เหมือนกัน- ใช้
"d"สำหรับค่าตัวเลข,"x"สำหรับ Hex,"f"สำหรับ Flags