เมธอด Enum.GetNames(Type enumType) ส่งคืน String Array ของชื่อสมาชิกทั้งหมดใน Enumeration ใช้สำหรับแสดงผล, UI Binding, Validation
ตัวอย่างพื้นฐาน
enum Stock
{
Watches,
Books,
Grocery
}
// ดึงชื่อทั้งหมด
foreach (string name in Enum.GetNames(typeof(Stock)))
{
Console.WriteLine(name);
}
ตัวอย่างสมบูรณ์
using System;
class Demo
{
enum Stock
{
Watches,
Books,
Grocery
}
static void Main()
{
// ดึงชื่อตาม Index (GetName)
Console.WriteLine("หมวดที่ 1: " + Enum.GetName(typeof(Stock), 0)); // Watches
Console.WriteLine("หมวดที่ 2: " + Enum.GetName(typeof(Stock), 1)); // Books
Console.WriteLine("หมวดที่ 3: " + Enum.GetName(typeof(Stock), 2)); // Grocery
Console.WriteLine("ทุกหมวดหมู่:");
// ดึงชื่อทั้งหมด (GetNames)
foreach (string name in Enum.GetNames(typeof(Stock)))
{
Console.WriteLine(name);
}
}
}
ผลลัพธ์
หมวดที่ 1: Watches หมวดที่ 2: Books หมวดที่ 3: Grocery ทุกหมวดหมู่: Watches Books Grocery
GetNames vs GetValues
| เมธอด | คืนค่า | ใช้เมื่อไหร่ |
|---|---|---|
GetNames | string[] | ต้องการชื่อ (Display, UI) |
GetValues | Array (Underlying Values) | ต้องการค่าตัวเลข (Calculate, Compare) |
GetName | string (Single) | ต้องการชื่อของค่าเฉพาะ |
การใช้งานร่วมกับ LINQ
var stockNames = Enum.GetNames(typeof(Stock))
.Select((name, index) => new { Index = index, Name = name })
.ToList();
var stockDict = Enum.GetValues(typeof(Stock))
.Cast<Stock>()
.ToDictionary(e => e.ToString(), e => (int)e);
หมายเหตุ: GetNames ส่งคืนตามลำดับที่ประกาศใน Source Code ไม่ใช่ลำดับค่าตัวเลข