यह अन्य उत्तरों द्वारा बहुत अधिक कवर किया गया है, लेकिन "यह एक अभिव्यक्ति है" वास्तव में यह नहीं समझाता है कि यह इतना उपयोगी क्यों है ...
C ++ और C # जैसी भाषाओं में, आप स्थानीय रेडीली फ़ील्ड्स (एक विधि निकाय के भीतर) का उपयोग करके उन्हें परिभाषित कर सकते हैं। यह एक पारंपरिक अगर / तो बयान के साथ संभव नहीं है क्योंकि एक एकल क्षेत्र के मूल्य को उस एकल विवरण के भीतर सौंपा जाना है:
readonly int speed = (shiftKeyDown) ? 10 : 1;
के रूप में ही नहीं है:
readonly int speed;
if (shifKeyDown)
speed = 10; // error - can't assign to a readonly
else
speed = 1; // error
इसी तरह आप अन्य कोड में तृतीयक अभिव्यक्ति एम्बेड कर सकते हैं। स्रोत कोड को अधिक कॉम्पैक्ट बनाने के साथ ही (और कुछ मामलों में परिणामस्वरूप अधिक पठनीय) यह उत्पन्न मशीन कोड को और अधिक कॉम्पैक्ट और कुशल बना सकता है:
MoveCar((shiftKeyDown) ? 10 : 1);
... एक ही विधि को दो बार कॉल करने की तुलना में कम कोड उत्पन्न कर सकते हैं:
if (shiftKeyDown)
MoveCar(10);
else
MoveCar(1);
बेशक, यह एक और अधिक सुविधाजनक और संक्षिप्त रूप है (कम टाइपिंग, कम पुनरावृत्ति, और यदि आप एक / अन्य तरीके से कोड के डुप्लिकेट को कॉपी करना है तो त्रुटियों की संभावना को कम कर सकते हैं)। स्वच्छ "सामान्य पैटर्न" में इस तरह के मामले:
object thing = (reference == null) ? null : reference.Thing;
... इसे पढ़ने / पार्स / समझने (एक बार जब आप इसके लिए उपयोग किया जाता है) की तुलना में तेजी से लंबे समय से घुमावदार हैं यदि / और इसके बराबर है, तो यह आपको तेजी से 'ग्रॉक' कोड में मदद कर सकता है।
बेशक, सिर्फ इसलिए कि यह उपयोगी है इसका मतलब यह नहीं है कि यह हर मामले में उपयोग करने के लिए सबसे अच्छी बात है । मैं केवल कोड के छोटे बिट्स के लिए इसका उपयोग करने की सलाह दूंगा जहां अर्थ स्पष्ट है (या अधिक स्पष्ट किया गया है) का उपयोग करके ?:
- यदि आप इसे अधिक जटिल कोड में उपयोग करते हैं, या एक दूसरे के भीतर घोंसले के संचालनकर्ता इसे कोड को पढ़ने के लिए बहुत मुश्किल बना सकते हैं ।