2009-05-12 72 views

Trả lời

104
Dim val = DirectCast([Enum].Parse(GetType(Gender), "Male"), Gender) 
+0

nếu tôi không biết loại và muốn chuyển đổi nói chung. trong ví dụ này bạn đã chỉ định 'Nam'. tôi đã lưu giá trị enum trong cơ sở dữ liệu và đang cố gắng lấy lại nó. trong trường hợp này tôi có thể không biết giá trị thực tế mà tôi đã lưu kể từ khi đang chuyển đổi sangString – Smith

+0

Bạn nên lưu loại Enum có liên quan với giá trị, nói "Namespaces.EnumName". Sau khi bạn có thể sử dụng sự phản chiếu để lấy đối tượng Type theo tên: Dim t = Type.GetType ("Namespaces.EnumName") và truyền 't' thay vì 'GetType (Gender)'. Ngoài ra, bạn sẽ phải truyền giá trị kết quả. Để làm điều này, bạn phải biết loại enum cụ thể trong khi viết mã. – Kamarey

+2

Trong .NET 4.0 cú pháp đơn giản là: 'Parse (enumType As System.Type, value As String) Như Object' – motto

18
+0

Chỉ có phương thức Parse(). Bạn không chắc chắn phương thức Enum.TryParse() ở đâu? –

+10

@David: Enum.TryParse() có sẵn trong .NET 4 –

+1

liên kết chính xác, không thể chỉnh sửa câu trả lời vì nó ít hơn 30 ký tự: http://msdn.microsoft.com/en-us/library/dd783499 .aspx –

2

làm thế nào tôi có thể chuyển đổi một chuỗi "Nam" với giá trị Nam enum Giới tính không?

Giải pháp được chấp nhận trả về đối tượng Enum. Để trở về giá trị mà bạn muốn giải pháp này:

dim MyGender as string = "Male" 
dim Value as integer 
Value = DirectCast([Enum].Parse(GetType(Gender), MyGender), Integer) 

Cũng có thể làm theo cách này:

value = cInt([enum].Parse(GetType(Gender), MyGender)) 
0

Nếu bạn muốn phân tích cú pháp là trường hợp nhạy cảm, bạn có thể sử dụng như sau:

[Enum].Parse(Gender, DirectCast(MyGender, String), True) 

Điều này sẽ xử lý dim MyGender as string = "Male" hoặc dim MyGender as string = "male"

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