Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức Enum.IsDefined trong C#

Phương thức Enum.IsDefined() kiểm tra xem một giá trị nguyên (hoặc tên chuỗi) có tồn tại trong một enum được chỉ định hay không. Trả về true nếu tìm thấy, ngược lại false.

Cú pháp

public static bool IsDefined(Type enumType, object value);

Ví dụ với enum Subjects

enum Subjects { Maths, Science, English, Economics };
// Mặc định: Maths=0, Science=1, English=2, Economics=3

object ob = 3;
bool result = Enum.IsDefined(typeof(Subjects), ob);  // true

Mã nguồn hoàn chỉnh

using System;

public class Demo
{
    enum Subjects { Maths, Science, English, Economics };
    
    public static void Main()
    {
        object ob = 3;
        Console.WriteLine("{0} = {1}", ob, Enum.IsDefined(typeof(Subjects), ob));
    }
}

Kết quả

3 = True

Kiểm tra theo tên chuỗi

Enum.IsDefined(typeof(Subjects), "Maths");   // true
Enum.IsDefined(typeof(Subjects), "Physics"); // false

Lưu ý quan trọng

  • Tham số enumType phải là kiểu enum (kiểm tra tại runtime).
  • Tham số value có thể là: giá trị nguyên (int, byte, long...), hoặc chuỗi tên hằng số.
  • Hiệu suất: Phương thức này dùng reflection, chậm hơn so với kiểm tra thủ công. Tránh dùng trong vòng lặp hot path.
  • Với enum [Flags], nó kiểm tra giá trị đơn lẻ, không phải tổ hợp bit.

Ví dụ kiểm tra an toàn

public static bool IsValidSubject(int value)
{
    return Enum.IsDefined(typeof(Subjects), value);
}

// Hoặc dùng pattern matching (C# 7+)
public static bool IsValidSubject2(int value) 
    => Enum.IsDefined(typeof(Subjects), value);