2010-06-22 44 views
5

Tôi có enum sauChuyển đổi enum để int

public enum TESTENUM 
{ 
    Value1 = 1, 
    Value2 = 2 
} 

sau đó tôi muốn sử dụng này để so sánh với một biến số nguyên mà tôi có, như thế này:

if (myValue == TESTENUM.Value1) 
{ 
} 

Nhưng để làm được điều bài kiểm tra này tôi phải cast enum như sau (hoặc có lẽ tuyên bố số nguyên như kiểu enum):

if (myValue == (int) TESTENUM.Value1) 
{ 
} 

Có cách nào để tôi có thể nói er rằng enum là một loạt các số nguyên, vì vậy mà tôi không phải làm điều này diễn viên hoặc xác định lại biến?

+3

lý do bạn muốn làm điều đó? –

Trả lời

12

số Bạn cần phải cast giá trị enum. Nếu bạn không muốn truyền, hãy xem xét sử dụng một lớp có giá trị int không đổi:

class static EnumLikeClass 
{ 
    public const int Value1 = 1; 
    public const int Value2 = 2; 
} 

Tuy nhiên, có một số nhược điểm này; thiếu an toàn loại là lý do chính để sử dụng số enum.

+4

Cảm ơn bạn đã downvote. Chỉ cần cảm thấy như mất điểm ngày hôm nay, hoặc bạn có lý do cụ thể để làm như vậy mà bạn muốn chia sẻ? – codekaizen

+1

+1 Câu trả lời hay. Bạn không chỉ cung cấp câu trả lời "Bạn cần truyền giá trị enum", nhưng bạn cũng cung cấp một giải pháp thay thế có thể thích hợp cho @ pm_2. Ai downvoted bạn nên cung cấp một lý do. Có lẽ đó là việc sử dụng tên lớp TestEnum cho cái gì đó không phải là một enum. Chúng ta có thể không bao giờ biết. Dù sao đi chăng nữa, nó cũng không đáng để trả giá. –

+0

@Daniel - điểm tốt, có thể đó là tên lớp xấu. Ở đó, tôi đã sửa nó! – codekaizen

1

Không có (không giống như C++) và vì lý do an toàn loại tốt.

2

Bạn có thể nói enum rằng nó có chứa số nguyên:

public enum TESTENUM: int 
{ 
    Value1 = 1, 
    Value2 = 2 
} 

Tuy nhiên bạn phải vẫn quăng tay,

+2

Bạn vẫn cần truyền. – codekaizen

+7

Tất cả các enums là int theo mặc định. –

+0

bạn không phải cung cấp: Int vì nó là theo mặc định. – Chinjoo

2

Hãy ghi nhớ rằng đúc các giá trị enum trong ngữ cảnh của bạn là chính xác cách bạn nói với trình biên dịch rằng "nhìn ở đây, tôi biết giá trị enum này là kiểu int, vì vậy sử dụng nó như vậy".

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