स्ट्रक्ट और क्लास के कई तरह के मेंबर एक्सप्रेशन बॉडी वाले मेंबर सिंटैक्स का उपयोग कर सकते हैं (फील्ड इसका मुख्य अपवाद हैं)। किसी मेंबर को एक्सप्रेशन से परिभाषित करने पर अक्सर पारंपरिक ब्लॉक/स्टेटमेंट की तुलना में ज़्यादा संक्षिप्त और पढ़ने में आसान कोड बनता है।
मेथड और रीड-ओनली प्रॉपर्टी भी उन मेंबर में शामिल हैं जिन्हें एक्सप्रेशन बॉडी से परिभाषित किया जा सकता है।
public int Times3(int input) => input * 3;
public int Interesting => 1729;
एक switch एक्सप्रेशन किसी वैल्यू को पैटर्न के समूह में किसी एक केस से मिला सकता है और उससे जुड़ी वैल्यू लौटा सकता है या उससे जुड़ी क्रिया कर सकता है। यह जोड़ => चिह्न से दर्शाया जाता है। साथ ही, हर पैटर्न में एक वैकल्पिक केस गार्ड भी हो सकता है, जिसकी शुरुआत when कीवर्ड से होती है। switch के उस "आर्म" को चुनने के लिए केस गार्ड एक्सप्रेशन का मूल्यांकन सही होना ज़रूरी है। केस (जिन्हें switch आर्म भी कहते हैं) टेक्स्ट के क्रम में जाँचे जाते हैं, और जैसे ही कोई मेल मिलता है, प्रक्रिया वहीं रोक दी जाती है और उससे जुड़ी वैल्यू लौटा दी जाती है।
double xx = 42d;
string interesting = xx switch
{
0 => "I suppose zero is interesting",
3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
3.14 => "π",
42 => "a bit of a cliché",
1729 => "only if you are a pure mathematician",
_ => "not interesting"
};
// => interesting == "a bit of a cliché"
टर्नरी ऑपरेटर की मदद से if शर्तों को स्टेटमेंट ब्लॉक के बजाय एक्सप्रेशन में परिभाषित किया जा सकता है। यह फंक्शनल प्रोग्रामिंग के तरीकों जैसा है और अक्सर कोड को ज़्यादा अभिव्यक्तिपूर्ण बनाता है और गलतियों की गुंजाइश कम कर देता है।
टर्नरी ऑपरेटर तीन एक्सप्रेशन को जोड़ता है: पहले एक शर्त, फिर वह एक्सप्रेशन जिसका मूल्यांकन तब होता है और जो तब लौटाया जाता है जब शर्त सही हो (यह if वाला हिस्सा है, जिसकी शुरुआत ? से होती है), और वह एक्सप्रेशन जिसका मूल्यांकन तब होता है और जो तब लौटाया जाता है जब शर्त गलत हो (यह else वाला हिस्सा है, जिसकी शुरुआत : से होती है)।
int a = 3, b = 4;
int max = a > b ? a : b;
// => 4
throw एक्सप्रेशन, throw स्टेटमेंट का एक विकल्प हैं और खास तौर पर टर्नरी तथा दूसरे मिश्रित एक्सप्रेशन को और शक्तिशाली बना सकते हैं।
string trimmed = str == null ? throw new ArgumentException() : str.Trim();
आपको मौसम स्टेशन से जुड़े कुछ पुराने कोड को बेहतर बनाने के लिए कहा गया है।
मौसम स्टेशन रीडिंग लेता है और तापमान तथा दबाव जैसे कुछ संकेतक देता है।
WeatherStation क्लास के जो भी मेथड उपयुक्त हों, उन्हें एक्सप्रेशन बॉडी वाले मेंबर इस्तेमाल करके रीफैक्टर कीजिए। जहाँ उपयुक्त हो, वहाँ अभिव्यक्ति क्षमता बढ़ाने और संभवतः एरर कम करने के लिए टर्नरी ऑपरेशन और switch एक्सप्रेशन इस्तेमाल कीजिए।
सुनिश्चित कीजिए कि सभी टेस्ट पास होते रहें।
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।