Trang chủ C# cơ bản enum trong C#

enum trong C#

Nguyễn Dương 07-06-2024

Trong bài viết trước, chúng ta đã cùng tìm hiểu về struct trong C#struct giúp chúng ta gom nhiều trường thông tin vào trong 1 và được dùng như 1 kiểu dữ liệu. Nay chúng ta sẽ cùng tìm hiểu về kiểu liệt kê trong C# nhé.

1. ENUM LÀ GÌ?

enum dùng để liệt kê một nhóm các biểu tượng hằng, do lập trình viên tự định nghĩa. Ví dụ gom các màu sắc vào một enum, gom tên 12 tháng trong năm vào một enum.

Đặc điểm:
- Là một kiểu dữ liệu tham trị.
- Không cho phép kế thừa.


2. CÁCH KHAI BÁO ENUM

Cú pháp:
enum
{
    //Danh sách liệt kê
}

- Tên enum là do lập trình viên tự đặt, nên đặt theo quy tắc đặt tên biến.
Danh sách liệt kê là danh sách các biểu tượng hằng, mỗi thành phần cách nhau bằng dấu phẩy.

Ví dụ
enum Level
{
     Low,
     Medium,
     High
}

Như vậy là mình đã có một kiểu liệt kê là Level, trong đó có các biểu tượng hằng là LowMediumHigh lần lượt đại diện cho các số nguyên là 0, 1, 2

Nếu khai báo hằng số như bình thường thì phải khai báo thành 3 dòng như sau:
public const int Low = 0;

public const int Medium = 1;

public const int High = 2;

Bạn cũng có thể quy định giá trị cho từng thành phần trong enum như sau: 

enum Level
{
     Low = 2,
     Medium = 4,
     High = 6
}

Nếu bạn không quy định giá trị cho chúng thì mặc định chúng sẽ mang giá trị là số nguyên, bắt đầu từ 0 và lần lượt tăng dần cho các thành phần tiếp theo.

3. SỬ DỤNG ENUM

 Truy xuất 1 thành phần trong enum bằng dấu chấm. 
Ví dụ:
Console.Write(Level.High);

Lưu ý mặc dù các thành phần của enum mang giá trị là số nguyên nhưng bạn không thể thao tác với chúng như với số nguyên được mà phải ép kiểu.
Ví dụ chương trình sau sẽ bị lỗi
class Program
{
        enum Level
        {
            Low,
            Medium,
            High
        }
        static void Main(string[] args)
        {
            int myLevel = Level.Medium;
            Console.Write(myLevel);

            Console.ReadLine();
        }
}

Lý do bị lỗi là vì chưa ép kiểu, để chương trình không báo lỗi, bạn cần ép về kiểu int.
class Program
{
        enum Level
        {
            Low,
            Medium,
            High
        }
        static void Main(string[] args)
        {
            int myLevel = (int)Level.Medium;
            Console.Write(myLevel);

            Console.ReadLine();
        }
}

Kết quả sẽ hiện số 1 ra màn hình.

Bạn cũng có thể ép về kiểu của enum Level
Level myLevel = (Level)1;
Console.Write(myLevel);

Kết quả sẽ hiện chữ Medium ra màn hình

Ví dụ enum với switch - case
namespace @enum
{
    class Program
    {
        enum Level
        {
            Low,
            Medium,
            High
        }
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            Level myLevel = (Level)1;

            switch (myLevel)
            {
                case Level.Low: Console.Write("Trình độ của bạn là: Trình độ thấp");
                    break;

                case Level.Medium: Console.Write("Trình độ của bạn là: Trình độ trung bình");
                    break;

                case Level.High: Console.Write("Trình độ của bạn là: Trình độ cao");
                    break;
            }

            Console.ReadLine();
        }
    }
}

Kết quả là hiện ra màn hình dòng chữ Trình độ của bạn là: Trình độ trung bình.

Khi khai báo 1 biến nào đó, các lập trình viên thường cố gắng xây dựng 1 tập hợp các giá trị của biến đó (nếu có thể) và gom chúng vào bằng enum. Điều này rất thường gặp trong các bộ thư viện của C# và đây là sự khác biệt giữa C# và Java.

Bài viết liên quan

Hàm đệ quy trong C# Hàm đệ quy trong C#
enum trong C# enum trong C#
Struct trong C# Struct trong C#
Lớp String trong C# Lớp String trong C#
Vòng lặp foreach trong C# Vòng lặp foreach trong C#
Mảng đa chiều, mảng của mảng trong C# Mảng đa chiều, mảng của mảng trong C#