Cách sử dụng Enum trong C#

Enums là một kiểu dữ liệu hữu ích cho phép bạn xác định danh sách các tùy chọn được đặt tên cho một biến. Ví dụ: nếu bạn muốn lưu trữ từng ngày trong tuần, bạn có thể sử dụng enum để biểu thị các giá trị hợp lệ.
Enums làm cho mã của bạn dễ đọc và viết hơn bằng cách khuyến khích các tên có ý nghĩa và giới hạn các giá trị bạn có thể sử dụng. Việc sử dụng câu lệnh chuyển đổi để xử lý các giá trị có thể có của một enum thường rất thuận tiện.
Bạn có thể khai báo và sử dụng enums trong nhiều ngôn ngữ lập trình, kể cả C#.
Mục Lục
Cách khai báo một Enum trong C#
Trong C#, bạn thường dán nhãn enums ở cấp độ không gian tên. Ví dụ: trong ứng dụng bảng điều khiển C#, bạn có thể khai báo các enum của mình dưới dạng thuộc tính lớp. Bạn có thể xem một ví dụ trong repo GitHub này.
class Program
{
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
} static void Main(string[] args)
{
}
}
Khi bạn khai báo một enum, mỗi tùy chọn sẽ nhận một giá trị số nguyên để biểu thị chỉ mục của nó. Theo mặc định, giá trị đầu tiên trong enum có giá trị chỉ mục là 0. Để thay đổi điều này, bạn có thể chỉ định chỉ mục của riêng mình cho phần tử đầu tiên khi bạn khai báo enum:
enum Weekday {
Monday = 1,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Trong trường hợp này, chỉ số của phần tử đầu tiên Thứ hai bắt đầu lúc 1. Chỉ số của phần tử tiếp theo Thứ ba sẽ là 2và như thế.
Cách truy cập giá trị Enum trong C#
Có nhiều cách khác nhau để bạn có thể truy cập các giá trị được lưu trữ bên trong enum. Giá trị được trả về cho mỗi tùy chọn trong enum là chỉ mục. Đối với ví dụ này, giá trị của Các ngày trong tuần.Thứ Sáu là 5.
Một cách bạn có thể truy xuất tên của enum là sử dụng Enums.GetName() chức năng. Cái này lấy tên của tùy chọn ở chỉ mục 5:
string friday = Enum.GetName(typeof(Weekday), Weekday.Friday);
Console.WriteLine("Thank God it's " + friday + "!");
Bạn cũng có thể truy cập một giá trị bằng cách sử dụng chỉ mục của nó. Trong trường hợp này, giá trị tại chỉ số 2 trong enum Ngày trong tuần (tức là Thứ Ba) sẽ được lưu trữ trong biến:
Weekday tuesday = (Weekday)2;
Console.WriteLine("Today is " + tuesday);
Khi bạn chuyển một enum làm đối số vào Console.WriteLine()các toString() phương pháp cho enum chạy tự động. Điều này có nghĩa là thay vì in giá trị số thực của enum, đó là 5nó sẽ in giá trị chuỗi, Thứ sáu.
Console.WriteLine(Weekday.Thursday + " is the new " + Weekday.Friday);
Bạn cũng có thể chuyển đổi hoặc phân tích kiểu dữ liệu thành số nguyên như một cách khác để lưu trữ chỉ mục của tùy chọn:
int mondayIndex = (int)Weekday.Monday;
Console.WriteLine(mondayIndex);
Cách so sánh Enums trong C#
Trong C#, bạn có thể so sánh các enum bằng các toán tử so sánh (==, !=, <, >, <=, >=). Điều này sẽ so sánh giá trị số của các tùy chọn.
Weekday day1 = Weekday.Monday;
Weekday day2 = Weekday.Tuesday;if (day1 == day2)
{
Console.WriteLine("The days are the same.");
}
else
{
Console.WriteLine("The days are different.");
}
Trong ví dụ này, giá trị của Weekday.Monday là 1 và giá trị của Weekday.Tuesday là 2, vì vậy 1 == 2 so sánh sẽ thất bại.
Một cách khác để so sánh enums là bằng() phương pháp:
if (day1.Equals(day2))
{
Console.WriteLine("The days are the same.");
}
else
{
Console.WriteLine("The days are different.");
}
Bạn cũng có thể sử dụng câu lệnh chuyển đổi C# để so sánh một giá trị với từng tùy chọn trong một enum. Trong ví dụ này, mã sẽ rơi vào trường hợp Thứ Tư:
Weekday valueToCompare = Weekday.Wednesday;switch (valueToCompare)
{
case Weekday.Monday:
Console.WriteLine("I need coffee.");
break;
case Weekday.Tuesday:
Console.WriteLine("I need coffee.");
break;
case Weekday.Wednesday:
Console.WriteLine("I need coffee.");
break;
case Weekday.Thursday:
Console.WriteLine("Thursday is the new Friday!");
break;
case Weekday.Friday:
Console.WriteLine("Thank God it's Friday!");
break;
case Weekday.Saturday:
Console.WriteLine("My favorite day!");
break;
case Weekday.Sunday:
Console.WriteLine("My other favorite day!");
break;
default:
Console.WriteLine("Invalid day of the week.");
break;
}
Cách lặp qua Enums trong C#
Bạn có thể lặp lại các enum trong C# bằng cách sử dụng Enum.GetValues() phương thức trả về một mảng gồm tất cả các giá trị trong enum. Đoạn mã này in mỗi ngày trong tuần, kể cả Thứ Hai, Thứ Ba, v.v.:
foreach (Weekday day in Enum.GetValues(typeof(Weekday)))
{
Console.WriteLine((int)day);
Console.WriteLine(day);
}
Bạn cũng có thể lặp lại các giá trị enum bằng cách sử dụng Enum.GetNames() phương pháp. Nó trả về một danh sách các giá trị chuỗi để biểu thị tên cho các tùy chọn enum:
foreach (string name in Enum.GetNames(typeof(Weekday)))
{
int index = (int)(Weekday)Enum.Parse(typeof(Weekday), name); Console.WriteLine(index);
Console.WriteLine(name);
}
Sử dụng Enums trong C#
Bạn có thể sử dụng enums trong mã của mình để mã dễ đọc hơn và ít bị lỗi hơn. Enums cũng có thể rất hữu ích khi kết hợp với các cấu trúc khác, chẳng hạn như từ điển.