2015-01-02 7 views
16

मैं निम्नलिखित enum हैटाइपप्रति enum काम नहीं कर रहा स्विच

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

चलो मान मैं enum प्रकार

var editMode = EditMode.Edit; 

निम्नलिखित कोड क्यों काम नहीं करता है के एक चर राशि (डिफ़ॉल्ट सीधे चला जाता है) ?

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

इस कोड टाइपप्रति खेल का मैदान में काम करता है। क्या आप सुनिश्चित हैं कि आपकी स्क्रिप्ट सही क्रम में लोड हो रही हैं? –

+0

मैं यह भी पुष्टि कर सकता हूं कि यह खेल के मैदान में काम करता है। –

+2

हां ऐसा करता है, ऐसा लगता है कि समस्या स्वयं कोड नहीं है। किसी कारण से मेरा कोड enum के पीछे एक संख्या निर्दिष्ट नहीं करता है, लेकिन संख्या के साथ जुड़े स्ट्रिंग जैसे कि 1 (संपादित करें) "1" का istead। मैं समझ नहीं पा रहा हूं। – Mantzas

उत्तर

9

मुझे पता चला है कि मैं क्यों होता हूं। कोड में कहीं एक सक्रियण फ़ंक्शन है (मैं डुरंडल का उपयोग कर रहा हूं) जो इस enum को स्ट्रिंग के रूप में पास करता है (फ़ंक्शन में एनम के रूप में चिह्नित पैरामीटर होता है लेकिन फिर भी यह एक स्ट्रिंग है)। यही कारण है कि मेरा स्विच स्टेटमेंट विफल रहता है। मैंने बस मूल्य को एक संख्या में परिवर्तित कर दिया और अब सब कुछ अपेक्षित काम करता है। धन्यवाद वैसे भी

+1

यह मेरे लिए भी समस्या थी। मेरे कन्स्ट्रक्टर के पास एनम प्रकार का पैरामीटर था, लेकिन एक बाहरी कॉलर एक स्ट्रिंग पास कर रहा था। मैंने कन्स्ट्रक्टर पैरामीटर को टाइप स्ट्रिंग के रूप में बदल दिया, और एनम टाइप [पैरामीटर] को एनम में बदलने के लिए इस्तेमाल किया। – mfanto

22

मुझे यह समस्या भी थी। आसान तरीका यह चारों ओर पाने के लिए: स्विच में अपने चर से पहले एक + का चिह्न है, यानी

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

यह टाइपस्क्रिप्ट गड़बड़/बग को ठीक करने का एकमात्र तरीका प्रतीत होता है। – Kokodoko

+1

तो + इसे किसी संख्या में बदल देगा, और ऐसा लगता है कि यह काम करता है। मुझे लगता है कि यह एक महान समाधान की तरह प्रतीत नहीं होता है। मैंने अपनी enum में पहले आइटम को 0 को असाइन करने का भी प्रयास किया और इससे मदद नहीं मिली। एक बग की तरह लगता है। – nycynik

संबंधित मुद्दे