2010-04-16 28 views

Trả lời

12

Không có nhiều điểm, thực sự, ngoại trừ việc nếu loại cơ bản mặc định (int) là không đủ cho bạn, ví dụ. bạn muốn sử dụng các giá trị số nguyên cao hơn giá trị số nguyên đó thì bạn có thể làm cho nó long. Điều này có thể hữu ích khi bạn có một en2 [Flags] enum với hơn 32 giá trị.

Bạn có thể làm cho nó byte hoặc short chỉ để hạn chế phạm vi của các giá trị, nhưng nó sẽ thực sự vẫn còn mất 4 byte (ví dụ. Giống như int).

+3

Bạn có trích dẫn cho phần cuối cùng không? – porges

+9

Đối với một biến duy nhất, phần cuối cùng có thể chính xác do đệm. Tuy nhiên, tôi tin rằng nếu bạn có một mảng lớn của một enum với một loại byte cơ bản, nó sẽ giống như có một 'byte []' thay vì một 'int []'. –

+0

Vâng, những gì Jon Skeet nói. Nhưng ai địa ngục sử dụng một loạt các enums? :) – EMP

3

Từ enum (C# Reference)

Các loại cơ bản quy định cụ thể bao nhiêu lưu trữ được phân bổ cho mỗi điều tra viên. Tuy nhiên, cần có một ký tự rõ ràng để chuyển đổi từ loại enum thành một loại tích phân.

+2

Tôi đoán tôi đã bỏ lỡ phần thông tin ít ngọt ngào đó .. haha – Marlon

3

Ngoài lý do kỹ thuật, tại sao ... Có nguyên tắc thiết kế tại đây.

chỉ định enum là có bộ nhớ byte là chi tiết triển khai. Sử dụng enum là một vấn đề khác, bạn không cần phải biết hoặc quan tâm đến các chi tiết thực hiện của nó. Trong mã máy khách, thực tế là bạn đang sử dụng enum nên có nghĩa là bạn đang thực sự có nghĩa là sử dụng một enum, không phải là một byte, hoặc dài vv Nếu không thì tại sao không chỉ sử dụng datatype bạn có ý nghĩa.

Rất khó khăn khi bị loại như C# cố gắng làm cho nó khó hơn một chút để bước ra ngoài "hợp đồng" của bạn, điều này thường giúp thiết kế ứng dụng tốt hơn một chút. Bây giờ tất nhiên tôi không nói rằng không có thời gian mà bạn phải tham gia vào các chi tiết thực hiện, một ví dụ tốt là nói một đối tượng ánh xạ quan hệ (ORM), nơi bạn đang ánh xạ một kiểu dữ liệu C# đến một kiểu dữ liệu cơ sở dữ liệu , enums là một ví dụ tốt, nơi bạn phải sau đó biết loại lưu trữ của nó để ánh xạ nó. Nhưng trong những trường hợp này, IMO của nó tốt để phải phát nổ hoặc phản ánh, đó là một lá cờ tốt trong đánh giá rằng ở đây bạn đang đặc biệt bước ra ngoài việc sử dụng thông thường.

Các vấn đề liên quan