C# - C Sharp: Kiểu liệt kê (enum)

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Kiểu liệt kê (enum) đơn giản là tập hợp các tên hằng có giá trị không thay đổi (thường được gọi là danh sách liệt kê).

Trong ví dụ 4 ở bài Biến và Hằng , có hai biểu tượng hằng có quan hệ với nhau:

const int DoDong = 0;

const int DoSoi = 100;

Do mục đích mở rộng ta mong muốn thêm một số hằng số   khác vào danh sách trên, như các hằng sau:

const int DoNong = 60;

const int DoAm = 40;

const int DoNguoi = 20;

Các biểu tượng hằng trên điều có ý nghĩa quan hệ với nhau, cùng nói về nhiệt độ của nước, khi khai báo từng hằng trên có vẻ cồng kềnh và không được liên kết chặt chẽ cho lắm. Thay vào đó C# cung cấp kiểu liệt kê để giải quyết vấn đề trên:

enum NhietDoNuoc

{

DoDong = 0,

DoNguoi = 20,

DoAm  = 40,

DoNong = 60,

DoSoi  = 100,

}

Mỗi kiểu liệt kê có một kiểu dữ liệu cơ sở, kiểu dữ liệu có thể là bất cứ kiểu dữ liệu nguyên nào như int, short, long... tuy nhiên kiểu dữ lịêu của liệt kê không chấp nhận kiểu ký tự. Để khai báo một kiểu liệt kê ta thực hiện theo cú pháp sau:

[thuộc tính] [bổ sung] enum <tên liệt kê> [:kiểu cơ sở] {danh sách các thành phần liệt kê};

Thành phần thuộc tính và bổ sung là tự chọn sẽ được trình bày trong phần sau của sách.

Trong phần này chúng ta sẽ tập trung vào phần còn lại của khai báo. Một kiểu liệt kê bắt đầu với từ khóa enum, tiếp sau là một định danh cho kiểu liệt kê:

enum NhietDoNuoc

Thành phần kiểu cơ sở chính là kiểu khai báo cho các mục trong kiểu liệt kê. Nếu bỏ qua thành phần này thì trình biên dịch sẽ gán giá trị mặc định là kiểu nguyên int, tuy nhiên chúng ta có thể sử dụng bất cứ kiểu nguyên nào như ushort hay long,..ngoại trừ kiểu ký tự. Đoạn ví dụ sau khai báo một kiểu liệt kê sử dụng kiểu cơ sở là số nguyên không dấu uint:

enum KichThuoc :uint

{

Nho = 1,

Vua = 2,

Lon = 3,

}

Lưu ý là khai báo một kiểu liệt kê phải kết thúc bằng một danh sách liệt kê, danh sách liệt kê này phải có các hằng được gán, và mỗi thành phần phải phân cách nhau dấu phẩy.

Ví dụ: Sử dụng kiểu liệt kê để đơn giản chương trình.

class MinhHoaC3

{

// Khai báo kiểu liệt kê enum NhietDoNuoc

{

DoDong = 0,

DoNguoi = 20,

DoAm  = 40,

DoNong = 60,

DoSoi  = 100,

}

static void Main()

{

System.Console.WriteLine( “Nhiet do dong: {0}”, NhietDoNuoc.DoDong);

System.Console.WriteLine( “Nhiet do nguoi: {0}”, NhietDoNuoc.DoNguoi);

System.Console.WriteLine( “Nhiet do am: {0}”, NhietDoNuoc.DoAm);

System.Console.WriteLine( “Nhiet do nong: {0}”, NhietDoNuoc.DoNong);

System.Console.WriteLine( “Nhiet do soi: {0}”, NhietDoNuoc.DoSoi);

}

}

Kết quả:

Nhiet do dong: 0

Nhiet do nguoi: 20

Nhiet do am: 40

Nhiet do nong: 60

Nhiet do soi: 100

-----------------------------------------------------------------------------

Mỗi thành phần trong kiểu liệt kê tương ứng với một giá trị số, trong trường hợp này là một  số nguyên. Nếu chúng ta không khởi tạo cho các thành phần này thì chúng sẽ nhận các giá trị tiếp theo với thành phần đầu tiên là 0.

Ta xem thử khai báo sau:

enum Thutu

{

ThuNhat,

ThuHai,

ThuBa = 10,

ThuTu

}

Khi đó giá trị của ThuNhat là 0, giá trị của ThuHai là 1, giá trị của ThuBa là 10 và giá trị  của ThuTu là 11.

Kiểu liệt kê là một kiểu hình thức do đó bắt buộc phải thực hiện phép chuyển đổi tường minh với các kiêu giá trị nguyên:

int x = (int) ThuTu.ThuNhat;

» Tiếp: Một số phím tắt thường dùng trong Visual Studio
« Trước: Nullable
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!