ऑपरेटरों पर 01: कोई छोटी-सर्किटिंग ऑपरेटरों (& & ||) केवल, ऑपरेटरों तार्किक और, शामिल हैं या और वे इस तरह व्यवहार के लिए bool?
परिभाषित कर रहे हैंऑपरेटर "उठाए गए" हैं। इसका क्या अर्थ है: यदि टी ऑपरेटर है, टी? "उठाया" समकक्ष होगा।
& & और || वास्तव में ऑपरेटरों को & के समान अर्थ में नहीं हैं और | - उदाहरण के लिए, वे अतिभारित नहीं किया जा सकता - ECMA कल्पना 14.2.2 ऑपरेटर ओवरलोडिंग से:
overloadable द्विआधारी ऑपरेटरों हैं: + - * /% & |^< < >> ==! => <> = < = ऊपर सूचीबद्ध ऑपरेटर ओवरलोड हो सकते हैं। ?, जाँच, अनियंत्रित नई, typeof, के रूप में, और ऑपरेटरों है: विशेष रूप से, यह सदस्य का उपयोग, विधि मंगलाचरण, या =, ओवरलोड & &, ||, ??, संभव नहीं है।
इसी तरह, ECMA कल्पना से, 14.2.7 लिफ़्टेड ऑपरेटरों, उठा लिया ऑपरेटरों हैं:
एकल ऑपरेटरों + ++ के लिए - - ~
बाइनरी ऑपरेटरों के लिए + - * /% & |^< < >>
समानता ऑपरेटरों के लिए ==!=
संबंधपरक ऑपरेटर < के लिए> < => =
तो बुनियादी तौर पर, शॉर्ट-सर्किट ऑपरेटरों को उठा लिया ऑपरेटरों के रूप में परिभाषित नहीं कर रहे हैं।
[संपादित करें: जोड़ा पालना शीट]
लिफ़्टेड ऑपरेटर: Nullable<T>
पर एक संकलक प्रदान की ऑपरेटर, टी के ऑपरेटरों के आधार पर - उदाहरण के लिए: int
"+" ऑपरेटर int?
पर "उठाया" हो जाता है ,
(int? x, int? y) => (x.HasValue & & y.HasValue)? (x.Value + y.Value): (int?) शून्य;
ऑपरेटर ओवरलोडिंग: किसी दिए गए प्रकार के लिए कस्टम ऑपरेटर कार्यान्वयन प्रदान करने का कार्य; दूसरे संकार्य यानी मूल्यांकन नहीं किया जा सकता है - - यानी
&&
और ||
(सी ++ और सी # सहित कई भाषाओं में) के सामान्य व्यवहार: उदाहरण के लिए decimal
और DateTime
विभिन्न ऑपरेटर overloads
लघु सर्किटिंग प्रदान
(अभिव्यक्ति 1, अभिव्यक्ति 2) => अभिव्यक्ति 1()? अभिव्यक्ति 2(): झूठी;
या शायद एक सरल उदाहरण:
bool someFlag = Method1() && Method2();
Method1()
अगर रिटर्न झूठी, तो Method2()
निष्पादित नहीं किया गया है (संकलक पहले से ही जानता है के बाद से है कि कुल मिलाकर जवाब गलत है)। यह महत्वपूर्ण है यदि Method2()
के साइड इफेक्ट्स हैं, क्योंकि डेटाबेस में बचत ...
धन्यवाद। हालांकि, सी ++ के बाद, यह सब शब्दावली ... शॉर्ट-सर्किट, उठाया गया ... ओवरराइड करने की असंभवता और ... मुझे बहुत अजीब लगता है :) – badbadboy
मैं एक पालना शीट जोड़ूंगा ;- –
@Marc Gravell: धन्यवाद !! – badbadboy