2011-09-19 35 views

Trả lời

21

Enums là các loại, giống như lớp học. Khi bạn khai báo một enum bên trong một lớp, nó chỉ là một kiểu lồng nhau. Một enum lồng nhau chỉ ẩn các enums khác có cùng tên được khai báo trong phạm vi bên ngoài, nhưng bạn vẫn có thể tham chiếu đến enum ẩn thông qua tên đầy đủ của nó (sử dụng tiền tố không gian tên, trong ví dụ của bạn).

Quyết định có khai báo enum cấp cao nhất hay enum lồng nhau không phụ thuộc vào thiết kế của bạn và liệu những enums đó có được sử dụng bởi bất kỳ thứ gì ngoài lớp. Bạn cũng có thể tạo một enum lồng nhau riêng tư hoặc được bảo vệ theo kiểu kèm theo của nó. Nhưng, enum cấp cao hơn phổ biến hơn nhiều.

+0

Vì vậy, tên riêng là một mức cao nhất? – surfasb

+0

Tôi nghĩ vậy ... Bạn có thể tìm thấy định nghĩa này [ở đây] (http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx). –

4

Nếu bạn đặt các kiểu liệt kê trong lớp, bạn sẽ cần phải xác định tên lớp mỗi khi bạn sử dụng nó bên ngoài của lớp, ví dụ:

SomeLongClassName x = new SomeLongClassName(SomeLongClassName.Game.High, SomeLongClassName.Switch.On); 

thay vì:

SomeLongClassName x = new SomeLongClassName(Game.High, Switch.On); 

Bạn có thể quyết định đặt bảng liệt kê bên trong một lớp nếu nó chỉ được sử dụng bởi lớp đó, nhưng loại cách ly đó chỉ hoạt động cho các lớp. Nếu bạn có một liệt kê chỉ được sử dụng bởi một phương pháp duy nhất, bạn không thể đặt nó bên trong phương thức.

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