2008-09-10 5 views
44

क्या कोई ऐसी परिस्थिति है जिसमें मैं And ऑपरेटर के बजाय AndAlso ऑपरेटर का उपयोग नहीं करना चाहूंगा? & hellip; या जिसमें मैं Or ऑपरेटर के बजाय OrElse ऑपरेटर का उपयोग नहीं करना चाहता हूं?क्या मुझे हमेशा एंडलसो और ऑरेल ऑपरेटर का उपयोग करना चाहिए?

उत्तर

32
MSDN से

:

शॉर्ट-सर्किट व्यापार गत

लघु सर्किटिंग एक अभिव्यक्ति है कि तार्किक आपरेशन के परिणाम को बदल नहीं सकते का मूल्यांकन नहीं द्वारा प्रदर्शन में सुधार कर सकते हैं। हालांकि, अगर वह अभिव्यक्ति अतिरिक्त क्रियाएं करती है, तो शॉर्ट सर्किटिंग उन कार्यों को छोड़ देती है। उदाहरण के लिए, यदि अभिव्यक्ति में फ़ंक्शन प्रक्रिया में कॉल शामिल है, तो अभिव्यक्ति को शॉर्ट सर्किट किया गया है, तो उस प्रक्रिया को नहीं कहा जाता है, और फ़ंक्शन में निहित कोई भी अतिरिक्त कोड नहीं चलता है। यदि आपका प्रोग्राम तर्क उस अतिरिक्त कोड पर निर्भर करता है, तो आपको शायद शॉर्ट सर्किटिंग ऑपरेटरों से बचना चाहिए।

+32

कोई तर्क दे सकता है कि फ़ंक्शन चलाने के लिए आपके तर्क कोड पर भरोसा करना अस्पष्ट है और आपके तर्क को स्पष्टता और रखरखाव के लिए उस पर भरोसा नहीं करने के लिए डिज़ाइन किया जाना चाहिए। –

+5

मैं सहमत हूं। असली पाठ यहां कोड नहीं लिखता है जो स्पष्ट रूप से इसके साइड इफेक्ट्स को इंगित नहीं करता है! –

15

निश्चित: यदि आप यह सुनिश्चित करना चाहते हैं कि दोनों अभिव्यक्ति के पक्षों का मूल्यांकन किया जाता है। यह मामला हो सकता है, उदाहरण के लिए, दोनों पक्ष विधि कॉल हैं जो किसी अन्य ऑपरेशन के परिणामस्वरूप बूलियन लौटाते हैं।

लेकिन सामान्य रूप से, आपको जब भी & &/|| का उपयोग करना होगा, तो आपको एंडलसो/ऑरलेस चाहिए सी/सी ++/सी # में, जो निश्चित रूप से उस समय का विशाल बहुमत है।

संबंधित मुद्दे