Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Kiểu liệt kê enum trong C#

E muốn hỏi tại sao phải liệt kê kiểu dữ liệu trước hàm main ạ như ví dụ này.


enum NhietDoNuoc :int
{
DoDong = 0,
DoSoi = 100,
Donguoi = 20,
Doam = 40,
Donong = 60,
}
static void Main(string[] args)
{
Console.WriteLine("nhiet do don :{0}",(int)NhietDoNuoc.DoDong);
Console.WriteLine("nhiet do soi :{0}",(int)NhietDoNuoc.DoSoi);
Console.WriteLine("Nhiet do nguoi :{0}",(int)NhietDoNuoc.Donguoi);
Console.WriteLine("Nhiet do am : {0}", (int)NhietDoNuoc.Doam);
Console.WriteLine("Nhiet do nong : {0}", (int)NhietDoNuoc.Donong);
Console.ReadLine();
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Ví dụ của bạn tương đương với dùng "hằng" - const.
const int DoDong = 0;
const int DoSoi = 100;
const int DoNguoi = 20;

Và khi gom lại theo "kiểu liệt kê" - enum thì được như ví dụ trên.

Tuy nhiên, khi định nghĩa 1 biến là const, thì giá trị của biến sẽ không thể thay đổi được. Còn định nghĩa trong enum thì có thể.

Ví dụ như khi nói về "độ sôi", thì nhiệt độ sôi của "nước" sẽ khác với nhiệt độ sôi của "thủy tinh", và cũng khác với "chất dẽo".
Do đó, "độ sôi" có thể thay đổi trong quá trình sử dụng.

Nhưng nếu dùng trong toán học, định nghĩa 1 số Pi. Thì giá trị của Pi là 3.14 và sẽ luôn là 3.14, không thể là 3.15 được.
Vậy nên nó là const, và không thể để trong enum. Nếu bạn cố làm vậy cũng không sao, chẳng lỗi gì cả. 

Còn ví dụ của bạn, DoDong - DoSoi - DoNguoi... tất cả đều là nhiệt độ nước - NhietDoNuoc, vậy nên gộp chung nó lại trong 1 block.
Vì tất cả đều có giá trị từ 0 - 100 nên có thể khai báo int. Và khi khai báo kiểu liệt kê thì cần có chữ enum. Hết.

P/s: Bạn nên sửa lại 1 chổ nhỏ là: Cách thức dùng kiểu liệt kê enum thay vì tại sao phải liệt kê kiểu dữ liệu trước hàm main nha. 
0 Lượt thích

Theo cách mình hiểu, dùng enum để:
-Thống nhất cách truy xuất giá trị
-Code dễ nhìn hơn
-Dễ thay đổi, bảo trì

Ví dụ: để xác định giới tính ta thường quy định trong database là kiểu số. Vấn đề ở chỗ, số nào sẽ sẽ đại diện cho giới tính nào; có thể [0-nam, 1 nữ] hay [1-nam, 2 nữ], v.v... Nếu 20 coder viết kiểu này sẽ loạn lên hết. Trường hợp sếp có quy định sẵn [1-nam, 2 nữ] thì khi code lắm lúc cũng phải ngồi nhớ hoặc lật sổ quy tắc ra coi (mất thời gian). Thay vào đó ta chỉ cần 1 đoạn enum

enum Sexsual
        {
            Male = 1,
            Female = 2,
        }
Lúc này khi cần xác định giới tính bạn chỉ cần

if(who == Sexual.Male) {...}
=> Không cần quan tâm giá trị số trên database nữa, mà code lại dễ đọc hơn. Sau này có thêm giới tính thứ 3 thì chỉ việc vào enum đổi, các đoạn code cũ vẫn xài lại bình thường.
0 Lượt thích

Console.WriteLine("nhiet do don :{0}", NhietDoNuoc.DoDong);
Tương đương với
Console.WriteLine("nhiet do don :{0}", NhietDoNuoc.DoDong.ToSting());
.ToSting() là hàm có trong tất cả các ọbect của C#(https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx)

Tuy nhiên, nếu muốn lấy giá trị của Enum thì bạn cần phải ép kiểu như trên.
0 Lượt thích

phải liệt kê kiểu "enum" vì 
1. Tối ưu hóa code làm cho code ngắn hơn
2. Kiểu dữ liệu được thống nhất
3. Dễ dàng thay đổi, bảo trì
Ví dụ:
Code1:
function1(){float nhietdosoi=100;Console.WriteLine("Nhiet do soi la:"+nhietdosoi);}
function2(){float nhietdosoi=100;Console.WriteLine("Nhiet do soi la:"+nhietdosoi);}
function3(){float nhietdosoi=100;Console.WriteLine("Nhiet do soi la:"+nhietdosoi);}

Code2:
float nhietdosoi=100;
function1(){Console.WriteLine("Nhiet do soi la:"+nhietdosoi);}
function2(){Console.WriteLine("Nhiet do soi la:"+nhietdosoi);}
function3(){Console.WriteLine("Nhiet do soi la:"+nhietdosoi);}

*Cái enums nó cũng dựa trên nguyên lý này..
0 Lượt thích

Sử dụng ENUM chỉ tiện lỢi intillense của Visual Studio thôi. 

Ví dụ:

enum DatabaseType {
MySQL = 1,
SQL = 2,
MSACCESS = 3,
}


public void initConnection(string connectionString, DatabaseType dbType) {
....
}

thay vì

public void initConnection(string connectionString, int dbType) {
....
}

Khi bạn sài dạng DatabaseType, đánh vào Visual Studio intellisense nó hiện ra chọn dropdown liền còn cái kia phải nhớ số. Enum chỉ có lợi ở chổ đó thôi
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng