ट्रैक
/
C#
C#
/
सिलेबस
/
switch स्टेटमेंट
sw

switch स्टेटमेंट में C#

2 अभ्यास

switch स्टेटमेंट के बारे में

प्रोग्रामिंग भाषाओं में switch स्टेटमेंट का इतिहास बहुत पुराना और सम्मानित रहा है। ये सबसे पहले C में आए, जहाँ अपनी गति के कारण इन्हें बहुत सराहा गया। लेकिन यह गति ऐसी कार्यक्षमता की कीमत पर मिली जो बहुत सीमित थी। C# में switch स्टेटमेंट की भूमिका पूर्णांकों से आगे तक बढ़ा दी गई है। switch स्टेटमेंट किसी भी मनमाने टाइप, वैल्यू या रेफरेंस को शामिल कर सकते हैं।

अगर आप किसी फंक्शनल भाषा से आते हैं, तो C# में डिस्क्रिमिनेटेड यूनियन और पैटर्न मैचिंग का जो सबसे नज़दीकी रूप आपको मिलेगा, वह switch स्टेटमेंट (और switch एक्सप्रेशन, जिनकी चर्चा कहीं और की गई है) के साथ काम करना है। लेकिन टाइप सेफ्टी लागू करने की जो शक्ति डिस्क्रिमिनेटेड यूनियन में है, वह इनमें कहीं नहीं है।

सरल switch स्टेटमेंट अपने C पूर्वजों जैसे ही होते हैं, जिनमें switch, case, break और default मिलते हैं।

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

ऊपर दिया गया पैटर्न किसी भी सरल टाइप (प्रिमिटिव + स्ट्रिंग) के साथ इस्तेमाल किया जा सकता है।

जब इसमें रेफरेंस टाइप भी शामिल होते हैं, तो अतिरिक्त सिंटैक्स की ज़रूरत पड़ती है: पहले टाइप को डाउन कास्ट करने के लिए और फिर गार्ड (when) जोड़ने के लिए, हालाँकि गार्ड सरल वैल्यू वाले case के साथ भी इस्तेमाल किए जा सकते हैं। इसे नीचे दिखाया गया है:

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • default क्लॉज़ वैकल्पिक है, लेकिन आमतौर पर इसे रखना बेहतर होता है।
  • किसी भी खाली न होने वाले case क्लॉज़ के लिए break स्टेटमेंट अनिवार्य है।
  • जाहिर है, case लेबल के सभी आर्गुमेंट का टाइप switch आर्गुमेंट के टाइप से ही लिया जाना चाहिए। Object टाइप का switch आर्गुमेंट जाहिर है सबसे बड़ी रेंज की अनुमति देता है।
  • गार्ड एक्सप्रेशन में स्कोप की कोई भी चीज़ शामिल हो सकती है, सिर्फ case आर्गुमेंट के मेंबर ही नहीं।
  • अलग-अलग case आर्गुमेंट वाले कई case एक ही कोड ब्लॉक की ओर इशारा कर सकते हैं।

switch स्टेटमेंट का दस्तावेज़ switch स्टेटमेंट का परिचय देता है।

GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

switch स्टेटमेंट सीखिए

अभ्यास लॉक है

switch स्टेटमेंट पर अभ्यास करने के लिए 6 और अभ्यास अनलॉक कीजिए