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ố
enumTypephải là kiểu enum (kiểm tra tại runtime). - Tham số
valuecó 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);