Enum trong C# là gì? Cú pháp và cách khởi tạo

Bài viết dưới đây Taimienphi.vn sẽ giới thiệu cho bạn về Enum trong C# là gì cũng như cách khởi tạo Enum trong C# như thế nào nhé.

Tìm hiểu về Enum trong C#
 

Mục Lục bài viết:
1. Enum trong C#.
    1.1. Cú pháp khai báo enum trong C#.
    1.2. Ví dụ về Enum trong C#.
2. Khởi tạo Enum.
    2.1. Ví dụ về khởi tạo Enum.
3. Thay đổi kiểu dữ liệu thành viên Enum.
    3.1. Ví dụ về thay đổi kiểu dữ liệu.

1. Enum trong C#

Enumeration (hoặc Enum) trong C# là kiểu dữ liệu giá trị, được sử dụng để gán tên hoặc chuỗi giá trị cho các hằng số nguyên để chương trình có thể dễ dàng đọc và duy trì. Cho ví dụ 4 chất: cơ, nhép, rô, bích trong bộ bài cũng là một Enum.

Enum được sử dụng để xác định các kiểu dữ liệu (kiểu dữ liệu liệt kê - Enumerated Data Type), và được khai báo bằng cách sử dụng từ khóa enum trực tiếp trong namespace, lớp (class) hoặc cấu trúc (structure).

1.1. Cú pháp khai báo enum trong C#

Cú pháp khai báo enum có dạng:

Trong cú pháp trên, Enum_variable là tên biến của enum, và string_1 được gán giá trị 0, string_2 được gán giá trị 1, ... . Theo mặc định, thành viên đầu tiên của enum có giá trị là 0, và mỗi giá trị thành viên enum tiếp theo tăng thêm 1 đơn vị, tuy nhiên chúng ta có thể thay đổi giá trị mặc định này.

1.2. Ví dụ về Enum trong C#

- Ví dụ 1: Dưới đây là đoạn mã ví dụ về enum. Trong đó enum có tên month được tạo và các thành viên dữ liệu của nó được gán các tên như jan, feb, mar, apr, may. Tiếp theo thử in các giá trị nguyên mặc định của các enum này, yêu cầu chuyển đổi kiểu tường minh (explicit) để chuyển đổi từ kiểu enum thành kiểu integral.

Kết quả đầu ra có dạng:

- Ví dụ 2: Trong ví dụ dưới đây, enum có tên shapes được tạo với các thành viên chuỗi dữ liệu là Circle được khởi tạo mặc định với giá trị 0, tương tự Square được gán giá trị 1 trong lớp Perimeter. Ngoài ra còn có một hàm thành viên peri () lấy tham số làm giá trị để khởi tạo bán kính, chu vi.

Ngoài ra còn có tham số khác được sử dụng để đánh giá shape là Circle hoặc Square dưới dạng giá trị nguyên (0 hoặc 1). Trong phương thức main (), đối tượng của lớp Perimeter được tạo. Trong quá trình gọi phương thức peri(), Perimeter.shapes.circle biểu thị nó là Circle có giá trị là 0 và tương tự là trường hợp của Perimeter.shapes.square có giá trị 1. Vì vậy bên trong phương thức, nếu đối tượng s1 có giá trị 0, tức là nó là Circle, tương tự nếu đối tượng có giá trị 1, tức là nó là Square.

Kết quả đầu ra có dạng:


 

2. Khởi tạo Enum

Như đã đề cập ở trên, giá trị mặc định của thành viên enum đầu tiên được đặt là 0, sau đó tăng thêm 1 giá trị cho các thành viên enum tiếp theo. Tuy nhiên nếu muốn bạn có thể thay đổi các giá trị mặc định này.

2.1. Ví dụ về khởi tạo Enum:

Trong ví dụ trên, day1 được gán giá trị 1 bởi người dùng, day2 được gán giá trị 2 và tương tự với thành viên day3. Vì vậy bạn chỉ cần thay đổi giá trị thành viên enum đầu tiên, các thanh viên enum tiếp theo sẽ tăng thêm 1 đơn vị so với giá trị trước đó.

Lưu ý: Nếu dữ liệu của thành viên của enum chưa được khởi tạo, giá trị của nó được thiết lập theo các quy tắc dưới đây:
- Nếu là thành viên đầu tiên, giá trị của nó sẽ được đặt là 0 nếu không.
- Nó đặt giá trị bằng cách thêm 1 vào giá trị trước đó của thành viên dữ liệu enum.

2.2. Ví dụ khác về khởi tạo enum:

Ở đây A được đặt giá trị là 0 theo mặc định, B được tăng thêm 1 giá trị. Tuy nhiên vì C được khởi tạo là 6 bên giá trị của D sẽ là 7.

Ví dụ: Ví dụ dưới đây minh họa việc khởi tạo dữ liệu thành viên enum với các giá trị do người dùng xác định và một số trường hợp đặc biệt khi khởi tạo enum.

Kết quả đầu ra có dạng:

Giải thích: Trong đoạn mã trên, có 2 enum là color và days. Trong trường hợp của enum days, khởi tạo không được thực hiện. Vì vậy theo quy tắc, Monday được gán giá trị là 0, lần lượt tăng thêm 1 giá trị cho Tuesday, Wednesday và các ngày khác.

Tuy nhiên trong trường hợp của enum color, Red sẽ được gán giá trị 0, Yellow được tăng thêm 1 giá trị, tương tự với Blue. Trong trường hợp của Green, giá trị của nó được gán bằng cách thêm 1 giá trị vào giá trị của Yellow là 5, vì vậy kết quả giá trị là 6. Tương tự trường hợp của Brown, giá trị của nó sẽ là 7 và trong trường hợp là Balck, giá trị của nó sẽ là 10, (7 + 3).
 

3. Thay đổi kiểu dữ liệu thành viên Enum

Mặc định, kiểu dữ liệu cơ sở của enum trong C# là int. Tuy nhiên người dùng có thể thay đổi sang kiểu bool, long, double, ... nếu muốn.

3.1. Ví dụ về thay đổi kiểu dữ liệu thành viên Enum trong C#:

Chương trình: Chương trình dưới đây minh họa sự thay đổi kiểu dữ liệu thành viên của Enum.

Đầu vào:

Kết quả đầu ra có dạng:

Như vậy bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn về Enum trong C#. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết khác đã có trên Taimienphi.vn để tìm hiểu rõ hơn về cấu trúc trong C#chuỗi trong C# là gì nhé.

Trong bài học C# dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về Enum trong C#. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết trước để tìm hiểu chuỗi (string) và cấu trúc (structure) trong C#.
Comment trong C++
Lớp và đối tượng trong C#
Hằng và cách sử dụng hằng trong C#
Number trong C++
Cú pháp C++ cơ bản
Các kiểu dữ liệu trong C#

ĐỌC NHIỀU