2011-11-27 34 views
10

Tôi thấy các Enum.GetValues trả về cơ sở Array loại và Enum.GetNames trả về một mảng string. Nhưng tôi không hiểu điều này rất quan trọng. Đối với enum, mọi giá trị đều là chuỗi.Sự khác biệt giữa Enum.GetValues ​​và Enum.GetNames

Nhưng, có sự cố liên quan. Các dữ liệu DataGridViewComboBox cột dữ liệu đến enum nếu tôi cung cấp cho DataSource = Enum.GetValues, nhưng nó không databind khi tôi cung cấp cho nó Enum.GetNames dưới dạng DataSource.

Trả lời

12

GetValues sẽ trả về một mảng giá trị cơ bản cho mỗi mục trong Enum.

GetNames sẽ trả về một mảng chuỗi Tên cho các mục trong enum.

Mảng được trả về bởi GetValues ​​triển khai IList trong khi chuỗi [] trả về bởi GetNames không, điều này giải thích sự khác biệt ràng buộc.

+0

mát. Bây giờ tôi hiểu rồi. Cảm ơn authority_tech! –

14

Enums thực sự là số. GetNames trả về tên trường. GetValues trả về giá trị số.

MSDN có mẫu tuyệt vời trên GetValues.

11

Hãy suy nghĩ về liệt kê dưới dạng cặp Tên/Giá trị.

enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 }; 

Trong ví dụ trên, GetNames() sẽ trả về một mảng string chứa các mục "Negative", "Zero", và "tích cực". GetValues() sẽ trả về một mảng int chứa -1, 0 và 1.


Có một ví dụ về ràng buộc tên Enum để một thả xuống trong một DataGridView đây: Create drop down list options from enum in a DataGridView

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