- Một enum chỉ là một giá trị không phải là một giá trị. Nó không có địa chỉ.
- Một enum chỉ có thể là một hằng số thời gian biên dịch, không phải là hằng số thời gian chạy.
- Enums không thêm bất kỳ bloat nào vào tệp đối tượng.
- Enums biên dịch nhanh hơn và sử dụng ít bộ nhớ hơn vào thời gian biên dịch. Thông thường nó là không đáng kể, nhưng nếu bạn đang làm metaprogramming đủ phức tạp nó có thể bắt đầu quan trọng.
Nói chung, đối với những thứ có thời gian biên dịch trái ngược với hằng số thời gian chạy, không có bất lợi khi sử dụng enum và có lợi thế là làm cho ý định của bạn hoàn toàn rõ ràng và hiệu quả hơn.
Chỉnh sửa: Một trường hợp sử dụng khác cho enums có thể định hướng cho trình biên dịch xem có nên đánh giá hàm trong thời gian chạy hoặc biên dịch hay không. Nếu kết quả của một hàm được gán cho biến ngăn xếp immutable
, hàm sẽ được đánh giá khi chạy. Nếu bạn sử dụng một số enum
trong cùng một phạm vi, kết quả sẽ được đánh giá vào thời gian biên dịch.