.net - C# Switch/case share the same scope? -


संभव डुप्लिकेट:

मैंने हमेशा आश्चर्य किया है:

जब मैं लिखता हूं:

  स्विच (temp) {case "1": int tmpInt = 1; टूटना; }   

मामला "1": क्षेत्र में कोड का एक क्षेत्र है, जिसे निष्पादित किया जाता है (जब तक ब्रेक नहीं)

अब,

ऊपर से एक झरना नहीं कर सकता किसी 2 के मामले में प्राप्त करें : <पूर्व> स्विच (अस्थायी) {मामला "1": int tmpInt = 1; मामले "2": तोड़; }

// त्रुटि: ब्रेक रिटर्न गायब है।

तो मुझे लगता है, उनके पास अलग-अलग क्षेत्र हैं (मामले ... .break)।

तो ये त्रुटियां क्यों दिखाई देती हैं?

यहां छवि विवरण दर्ज करें

// संघर्ष चर tmpInt नीचे परिभाषित किया गया है।

ps यह सिर्फ एक मूर्खतापूर्ण सवाल है, फिर भी दिलचस्प है।

सी # में गुंजाइश पूरी तरह से निर्धारित है ब्रेसिज़ द्वारा यदि कोई नहीं है, तो कोई अलग क्षेत्र नहीं है स्विच / केस के साथ स्पष्ट रूप से कोई नहीं है क्या आप एक »निष्पादन के क्षेत्र फोन« कुछ भी नहीं है जहाँ आप एक चर को संदर्भित कर सकते हैं के साथ सब कुछ नहीं है एक अनुरुपित उदाहरण के लिए:

  int x = 1; गोटो फू; // इस भाग को कभी भी निष्पादित नहीं किया जाता है, लेकिन आप कानूनी तौर पर एक्स को यहां संदर्भित कर सकते हैं। Foo:   

आप निम्न कार्य कर सकते हैं, हालांकि, यदि आप चाहें:

  स्विच (अस्थायी) {मामला "1": {int tmpint = 1 ; टूटना; } मामला "2": {int tmpint = 1; टूटना; }}   

वास्तव में, कुछ स्विच स्टेटमेंट्स के लिए मैं ऐसा करता हूं, क्योंकि यह अन्य मामले s को प्रदूषित न करके जीवन को बहुत आसान बनाता है । मैं कभी पास्कल को याद करता हूं; -)

आपके प्रयासों के बारे में, आपको यह स्पष्ट करना होगा कि सी # में गोटो केस "2" < / html>

Comments