C# 8.0 ने switch expression पेश किया जो एक्सप्रेशन कॉन्टेक्स्ट में स्विच-जैसी सेमेंटिक्स प्रदान करता है। यह पारंपरिक switch स्टेटमेंट से अधिक संक्षिप्त और अभिव्यंजक है।
पारंपरिक Switch Statement
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;
}
नया Switch Expression (C# 8.0+)
var message = c switch {
Fruits.Red => "The Fruit is red",
Fruits.Green => "The Fruit is green",
Fruits.Blue => "The Fruit is blue",
_ => "The Fruit is unknown." // डिफ़ॉल्ट केस (_ डिस्कार्ड पैटर्न)
};
पूर्ण उदाहरण
class Program {
public enum Fruits { Red, Green, Blue }
public static void Main() {
Fruits c = (Fruits)(new Random()).Next(0, 3);
// नया switch expression - एक वेरिएबल को असाइन करता है
var message = c switch {
Fruits.Red => "The Fruit is red",
Fruits.Green => "The Fruit is green",
Fruits.Blue => "The Fruit is blue",
_ => "The Fruit is unknown."
};
System.Console.WriteLine(message);
Console.ReadLine();
}
}
आउटपुट
The Fruit is green
Switch Expression के लाभ
- एक्सप्रेशन-बॉडीड: सीधे मान लौटाता है, स्टेटमेंट ब्लॉक की आवश्यकता नहीं
- कोई break आवश्यक नहीं: फॉल-थ्रू बग्स समाप्त
- पैटर्न मैचिंग: प्रॉपर्टी पैटर्न, टुपल पैटर्न, रिलेशनल पैटर्न आदि का समर्थन
- अधिक संक्षिप्त: कम बॉयलरप्लेट कोड
- डिस्कार्ड पैटर्न (_): डिफ़ॉल्ट केस के लिए साफ सिंटैक्स
उन्नत पैटर्न मैचिंग उदाहरण
// प्रॉपर्टी पैटर्न
var result = person switch {
{ Age: < 18 } => "Minor",
{ Age: >= 18, Age: < 65 } => "Adult",
{ Age: >= 65 } => "Senior",
_ => "Unknown"
};