Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में if/else और switch-case में क्या अंतर है?

Switch स्टेटमेंट एक सिलेक्शन स्टेटमेंट है जो मैच एक्सप्रेशन के साथ पैटर्न मैच के आधार पर उम्मीदवारों की सूची से एक स्विच सेक्शन को निष्पादित करता है।

मुख्य अंतर

पहलूif/elseswitch-case
सिंटैक्सबूलियन एक्सप्रेशन्स की श्रृंखलासिंगल एक्सप्रेशन का कई मानों से मिलान
पठनीयता3+ कंडीशन्स में जटिल3+ कंडीशन्स के लिए साफ
पेरफॉरमेंसO(n) - क्रमिक जांचO(1) - जंप टेबल/बाइनरी सर्च
टाइप समर्थनकोई भी बूलियन एक्सप्रेशनइंटीग्रल, स्ट्रिंग, एनम, पैटर्न्स
फॉल-थ्रूलागू नहींbreak के बिना डिफ़ॉल्ट (C# में break आवश्यक)

Switch उपयोग (पारंपरिक)

class Program {
    public enum Fruits { Red, Green, Blue }
    
    public static void Main() {
        Fruits c = (Fruits)(new Random()).Next(0, 3);
        
        switch (c) {
            case Fruits.Red:
                Console.WriteLine("The Fruit is red");
                break;
            case Fruits.Green:
                Console.WriteLine("The Fruit is green");
                break;
            case Fruits.Blue:
                Console.WriteLine("The Fruit is blue");
                break;
            default:
                Console.WriteLine("The Fruit is unknown.");
                break;
        }
        Console.ReadLine();
    }
}

if/else उपयोग

class Program {
    public enum Fruits { Red, Green, Blue }
    
    public static void Main() {
        Fruits c = (Fruits)(new Random()).Next(0, 3);
        
        if (c == Fruits.Red)
            Console.WriteLine("The Fruit is red");
        else if (c == Fruits.Green)
            Console.WriteLine("The Fruit is green");
        else if (c == Fruits.Blue)
            Console.WriteLine("The Fruit is blue");
        else
            Console.WriteLine("The Fruit is unknown.");
        
        Console.ReadLine();
    }
}

पेरफॉरमेंस विश्लेषण

  • Switch: कंपाइलर जंप टेबल या बाइनरी सर्च बना सकता है → औसत O(1) लुकअप
  • if/else: क्रमिक मूल्यांकन → O(n) तुलनाएँ
  • बड़े एनम/कॉन्स्टेंट सेट्स के लिए Switch काफी तेज़

कब क्या उपयोग करें?

Switch का उपयोग करें जब:

  • एक ही वेरिएबल/एक्सप्रेशन की कई मानों से तुलना
  • 3 या अधिक डिस्क्रीट केसेस
  • एनम, इंटीग्रल टाइप्स, स्ट्रिंग्स, पैटर्न्स (C# 7.0+)
  • पेरफॉरमेंस महत्वपूर्ण है

if/else का उपयोग करें जब:

  • जटिल बूलियन कंडीशन्स
  • रेंज चेक्स (x > 0 && x < 100)
  • एकाधिक वेरिएबल्स शामिल हों
  • केवल 2 कंडीशन्स (सरलता के लिए)
  • नॉन-कॉन्स्टेंट तुलनाएँ

आधुनिक C# (7.0+) में

  • Switch expressions (C# 8.0): अधिक संक्षिप्त, एक्सप्रेशन-बॉडीड
  • पैटर्न मैचिंग: टाइप पैटर्न्स, प्रॉपर्टी पैटर्न्स, टुपल पैटर्न्स
  • when क्लॉज: केस गार्ड्स के लिए
  1. - C# में इंटरफ़ेस और क्लास में क्या अंतर है?

    एक इंटरफ़ेस फील्ड्स या मेथड कार्यान्वयन के बिना एक क्लास है। यह उन मेथड्स को लागू नहीं कर सकता जो यह परिभाषित करता है।एक क्लास आमतौर पर इंटरफ़ेस में परिभाषित मेथड्स को लागू करती है।इंटरफ़ेसइंटरफ़ेस प्रॉपर्टीज, मेथड्स, और इवेंट्स को परिभाषित करते हैं, जो इंटरफ़ेस के सदस्य हैं। इंटरफ़ेस में केवल सदस्य

  1. - C# में String और string में क्या अंतर है?

    String का मतलब System.String है जबकि string C# में System.String के लिए एक एलियास (alias) है।उदाहरण के लिए:string str = Welcome!;यह आवश्यक नहीं है, लेकिन आमतौर पर String का उपयोग तब किया जाता है जब आप क्लासेस के साथ काम करते हैं।string str = String.Format(Welcome! {0}!, user);चूंकि string System.Str

  1. - C# में internal और private मॉडिफायर्स में क्या अंतर है?

    इंटरनल एक्सेस स्पेसिफायरइंटरनल एक्सेस स्पेसिफायर एक क्लास को अपने मेंबर वेरिएबल्स और मेंबर फंक्शन्स को करंट असेंबली में अन्य फंक्शन्स और ऑब्जेक्ट्स के लिए एक्सपोज़ करने की अनुमति देता है।इंटरनल एक्सेस स्पेसिफायर वाला कोई भी मेंबर उस एप्लिकेशन में परिभाषित किसी भी क्लास या मेथड से एक्सेस किया जा सकता