Nội dung chính
Enum trong C# là gì?
Enum trong C# là một "lớp" đặc biệt đại diện cho một nhóm các hằng số (các biến không thể thay đổi / chỉ đọc).
Sử dụng từ khóa enum để tạo một enum (thay vì lớp hoặc giao diện) và phân tách các mục enum bằng dấu phẩy (,).
Ví dụ
enum Level { Low, Medium, High }
Bạn có thể truy cập các phần tử của enum bằng cách sử dụng dấu chấm.
enum Level { Low, Medium, High } Level myVar = Level.Medium; Console.WriteLine(myVar);
Enum bên trong một lớp
Bạn cũng có thể định nghĩa enum bên trong một lớp trong C#.
using System; namespace VietTutsCsharp { class ViDuEnum1 { enum Level { Low, Medium, High } static void Main(string[] args) { Level myVar = Level.Medium; Console.WriteLine(myVar); } } }
Kết quả:
Medium
Giá trị Enum
Theo mặc định, mục đầu tiên của enum có giá trị 0. Mục thứ hai có giá trị 1, v.v.
using System; namespace VietTutsCsharp { class ViDuEnum2 { enum Months { January, // 0 February, // 1 March, // 2 April, // 3 May, // 4 June, // 5 July // 6 } static void Main(string[] args) { int myNum = (int)Months.April; Console.WriteLine(myNum); } } }
Kết quả:
3
Bạn cũng có thể gán các giá trị enum của riêng mình như ví dụ sau:
using System; namespace VietTutsCsharp { class ViDuEnum3 { enum Months { January, // 0 February, // 1 March = 6, // 6 April, // 7 May, // 8 June, // 9 July // 10 } static void Main(string[] args) { int myNum = (int) Months.April; Console.WriteLine(myNum); } } }
Kết quả:
7
Sử dụng Enum trong lệnh switch
Enum thường được sử dụng trong các câu lệnh switch để kiểm tra các giá trị tương ứng:
using System; namespace VietTutsCsharp { class ViDuEnum4 { enum Level { Low, Medium, High } static void Main(string[] args) { Level myVar = Level.Medium; switch (myVar) { case Level.Low: Console.WriteLine("Low level"); break; case Level.Medium: Console.WriteLine("Medium level"); break; case Level.High: Console.WriteLine("High level"); break; } } } }
Kết quả:
Medium level
Khi nào nên sử dụng Enum?
Sử dụng enum khi bạn có các giá trị mà bạn biết sẽ không thay đổi, như ngày tháng, ngày, màu sắc, ...