2015-01-02 16 views
16

tôi có enum saunguyên cảo enum chuyển đổi không làm việc

enum EditMode { 
    View = 0, 
    Edit = 1, 
    Delete = 2 
} 

Giả sử tôi có một biến kiểu enum

var editMode = EditMode.Edit; 

Tại sao đoạn mã sau không làm việc (đi thẳng để mặc định) ?

switch (editMode) { 
    case EditMode.Delete: 
     ... 
     break; 
    case EditMode.Edit: 
     ... 
     break; 
    default: 
     ... 
     break; 
    } 
+1

Mã này hoạt động trong Sân chơi TypeScript. Bạn có chắc là tập lệnh của bạn đang tải đúng thứ tự không? –

+0

Tôi cũng có thể xác nhận nó hoạt động trong Sân chơi. –

+2

vâng, có vẻ như vấn đề không phải là mã. vì một số lý do mã của tôi gán không phải là một số đằng sau enum nhưng chuỗi liên kết với số ví dụ istead của 1 (Edit) "1". tại sao tôi không thể hiểu được. – Mantzas

Trả lời

9

tôi đã tìm thấy lý do tại sao tôi xảy ra. một nơi nào đó trong mã có một chức năng kích hoạt (tôi đang sử dụng durandal) mà vượt qua enum này như là một chuỗi (chức năng có tham số được đánh dấu là một enum nhưng nó vẫn là một chuỗi). đây là lý do tại sao báo cáo chuyển đổi của tôi không thành công. tôi chỉ đơn giản là chuyển đổi giá trị thành một số và bây giờ mọi thứ hoạt động như mong đợi. cảm ơn anyways

+1

Đây cũng là vấn đề đối với tôi. Constructor của tôi đã có một tham số kiểu Enum, nhưng một người gọi bên ngoài đã đi qua một chuỗi. Tôi đã thay đổi tham số constructor thành chuỗi kiểu và sử dụng EnumType [parameter] để chuyển nó thành enum. – mfanto

22

Tôi cũng gặp sự cố này. Cách dễ dàng để thực hiện việc này: thêm dấu hiệu + trước biến của bạn trong chuyển đổi, tức là

switch (+editMode) { 
    case EditMode.Delete: 
     ... 
     break; 
    case EditMode.Edit: 
     ... 
     break; 
    default: 
     ... 
     break; 
    } 
+1

Điều này có vẻ là cách duy nhất để sửa lỗi trục trặc/lỗi. – Kokodoko

+1

Vì vậy, dấu + sẽ thay đổi thành số và dường như hoạt động. Tôi nghĩ rằng điều này dường như không phải là một giải pháp tuyệt vời. Tôi cũng đã cố gắng gán mục đầu tiên cho 0 trong enum của tôi và nó đã không giúp đỡ. Có vẻ như một con bọ. – nycynik