Switch स्टेटमेंट एक सिलेक्शन स्टेटमेंट है जो मैच एक्सप्रेशन के साथ पैटर्न मैच के आधार पर उम्मीदवारों की सूची से एक स्विच सेक्शन को निष्पादित करता है।
मुख्य अंतर
| पहलू | if/else | switch-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 क्लॉज: केस गार्ड्स के लिए