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

วิธีดึงค่า int จาก Enum ใน C# ด้วย Type Casting

ใน C# การแปลงค่า Enum เป็นค่าจำนวนเต็ม (int) ทำได้ง่ายด้วยการ Type Casting โดยตรง เนื่องจาก Enum มี Underlying Type เป็น int โดยค่าเริ่มต้น (0, 1, 2, ...)

หลักการพื้นฐาน

// ประกาศ Enum
public enum Vehicle { Car, Bus, Truck }

// Cast เป็น int
int a = (int)Vehicle.Car;   // ผลลัพธ์: 0
int b = (int)Vehicle.Bus;   // ผลลัพธ์: 1
int c = (int)Vehicle.Truck; // ผลลัพธ์: 2

โค้ดตัวอย่างสมบูรณ์

using System;

public class Demo
{
    public enum Vehicle { Car, Bus, Truck }

    public static void Main()
    {
        int a = (int)Vehicle.Car;
        int b = (int)Vehicle.Bus;
        int c = (int)Vehicle.Truck;

        Console.WriteLine("Car = {0}", a);
        Console.WriteLine("Bus = {0}", b);
        Console.WriteLine("Truck = {0}", c);
    }
}

ผลลัพธ์

Car = 0
Bus = 1
Truck = 2

ข้อมูลเพิ่มเติมที่ควรทราบ

1. กำหนดค่าเองได้ (Custom Values)

public enum StatusCode
{
    Success = 200,
    NotFound = 404,
    ServerError = 500
}

// ใช้งาน
int code = (int)StatusCode.NotFound; // 404

2. ใช้ Enum.GetValues() และ Enum.GetNames() สำหรับ Iteration

foreach (var name in Enum.GetNames(typeof(Vehicle)))
{
    var value = (int)Enum.Parse(typeof(Vehicle), name);
    Console.WriteLine($"{name} = {value}");
}

3. Pattern Matching (C# 7.0+)

Vehicle v = Vehicle.Bus;
if (v is Vehicle.Car) { /* ... */ }
int num = v switch
{
    Vehicle.Car => 0,
    Vehicle.Bus => 1,
    Vehicle.Truck => 2,
    _ => -1
};

4. Enum.TryParse() สำหรับการแปลงปลอดภัย

string input = "Truck";
if (Enum.TryParse(input, out Vehicle result))
{
    int value = (int)result; // 2
}

สรุป: ใช้ (int)EnumValue เพื่อดค่า int โดยตรง ใช้ Enum.TryParse เมื่อแปลงจาก String และพิจารณากำหนดค่า Custom ให้ Enum เมื่อต้อง Map กับค่าจริงในระบบ (เช่น HTTP Status Code)