(OrElse और Or) और (AndAlso और And) के बीच क्या अंतर है? क्या उनके प्रदर्शन में कोई अंतर है, सहीता लाभ कहें ?? क्या ऐसी कोई परिस्थिति है जिसे मैंने ऑरेल और एंडलसो का उपयोग नहीं किया?(OrElse और Or) और (और इसके अलावा और) - कब उपयोग करें?
उत्तर
Or/And
हमेशाका मूल्यांकन करेंगे दोनों भाव और फिर एक परिणाम लौटने। वे शॉर्ट सर्किटिंग हैं।
OrElse/AndAlso
short-circuiting हैं। सही अभिव्यक्ति का मूल्यांकन केवल तभी किया जाता है जब परिणाम अकेले बाएं अभिव्यक्ति के मूल्यांकन से निर्धारित नहीं किया जा सके। (इसका मतलब है कि: OrElse
केवल सही अभिव्यक्ति का मूल्यांकन करेंगे अगर छोड़ दिया अभिव्यक्ति गलत है, और AndAlso
केवल सही अभिव्यक्ति का मूल्यांकन करेंगे, तो बाईं अभिव्यक्ति सच है।)
यह मानते हुए कि कोई साइड इफेक्ट भाव में होते हैं और अभिव्यक्ति निर्भर नहीं हैं (और किसी निष्पादन ओवरहेड को अनदेखा किया जाता है), फिर वे वही हैं।
हालांकि, कई मामलों में यह है कि अभिव्यक्ति निर्भर हैं। उदाहरण के लिए, हम जब एक सूची नहीं-कुछ भी नहीं है और एक से अधिक तत्व है कुछ करना चाहता हूँ: (! या दुष्प्रभाव, ick)
If list IsNot Nothing AndAlso list.Length > 0 Then .. 'list has stuff
यह भी एक "महंगा" गणना से बचने के लिए इस्तेमाल किया जा सकता : -, या उससे कम उम्मीद है कि
If Not Validate(x) OrElse Not ExpensiveValidate(x) Then .. 'not valid
व्यक्तिगत रूप से, मुझे लगता है कि AndAlso
और OrElse
सही सब में उपयोग करने के लिए ऑपरेटरों लेकिन 1% कर रहे हैं! - उन मामलों में जहां एक दुष्प्रभाव वांछित है।
हैप्पी कोडिंग।
एक अपवाद पहली अभिव्यक्ति मूल्यांकन किया जा रहा से दूसरी अभिव्यक्ति नहीं कर पाएगा में फेंक दिया, लेकिन इस शायद ही आश्चर्य होना चाहिए ..
अंतर यह है कि OrElse और andalso शॉर्ट सर्किट आधारित जाएगा पहली शर्त पर, जिसका अर्थ है कि यदि पहली शर्त पास नहीं होती है, तो दूसरी (या अधिक) स्थितियों का मूल्यांकन नहीं किया जाएगा। यह विशेष रूप से उपयोगी होता है जब शर्तों में से एक दूसरे की तुलना में अधिक गहन हो सकता है।
उदाहरण जहां Or
ठीक है (दोनों की स्थिति का मूल्यांकन):
If Name = "Fred" Or Name = "Sam" Then
यह वास्तव में जो रास्ता कोई फर्क नहीं पड़ता के आसपास वे
मूल्यांकन किया जाता है निम्नलिखित AndAlso
उपयोगी है, क्योंकि दूसरी शर्त
If Not SomeObject Is Nothing AndAlso CheckObjectExistsInDatabase(SomeObject) Then
यह पहली शर्त के लिए यह जांचने की अनुमति देता है कि ऑब्जेक्ट सेट किया गया है या ऑनल y अगर यह सेट किया गया है तो डेटाबेस जाएगा (या कुछ अन्य कार्य)। यदि यह एक सादा And
कीवर्ड था, तो दोनों का मूल्यांकन किया जाएगा। जहां OrElse
/AndAlso
नहीं हैं
कम सर्किटिंग अन्य उत्तर में उल्लेख किया है इसके अलावा, Or
/And
बिटवाइज़ ऑपरेटर्स के रूप में प्रयोग करने योग्य हैं। बिटवाइज ऑपरेशंस में FileAttributes गणना जैसे मानों को जोड़ना शामिल है, जहां आप एक फ़ाइल को इंगित कर सकते हैं और FileAttributes.ReadOnly Or FileAttributes.Hidden
@Gideon - खुश किसी ने इंगित किया है।
Dim tm As New Stopwatch
Const tries As Integer = 123456
Dim z As Integer = 0
Dim s() As String = New String() {"0", "one"}
Debug.WriteLine("AndAlso")
For x As Integer = 0 To s.Length - 1
z = 0
tm.Restart() 'restart the stopwatch
For y As Integer = 0 To tries
If s(x) = x.ToString AndAlso s(x) = y.ToString Then '<<<<<<<<<<
z += 1
End If
Next
tm.Stop()
Debug.WriteLine(x.ToString.PadRight(3, " "c) & z.ToString.PadRight(10, " "c) & tm.Elapsed.ToString)
Next
Debug.WriteLine("And")
For x As Integer = 0 To s.Length - 1
z = 0
tm.Restart() 'restart the stopwatch
For y As Integer = 0 To tries
If s(x) = x.ToString And s(x) = y.ToString Then '<<<<<<<<<<
z += 1
End If
Next
tm.Stop()
Debug.WriteLine(x.ToString.PadRight(3, " "c) & z.ToString.PadRight(10, " "c) & tm.Elapsed.ToString)
Next
[? मैं हमेशा andalso और OrElse ऑपरेटरों का उपयोग करना चाहिए] (की
- 1. ओपनसामाजिक और इसके उपयोग
- 2. "willChangeValueForKey" और "didChangeValueForKey" का उपयोग कब करें?
- 3. ट्यूपल का उपयोग कब और कब करें?
- 4. OrElse और AndAlso अभिव्यक्ति विधियों का उपयोग करके अपवाद
- 5. मॉलोक का उपयोग कब और क्यों करें?
- 6. कोडनिर्देशक AND और OR स्थिति
- 7. Jquery - "यह" कब उपयोग करें और "$ (यह)" कब उपयोग करें?
- 8. क्या "डिस्प्ले का उपयोग कब करें: ब्लॉक कब करें: इनलाइन और कब: इनलाइन-ब्लॉक" और क्यों?
- 9. हाइबरनेट और जेपीए कैस्केड प्रकारों का उपयोग कब करें और
- 10. CABasicAnimation और CAKeyFrameAnimation और CGAffineTransform का उपयोग कब करें?
- 11. सिग्नल और स्लॉट का उपयोग कब करें और
- 12. बनाम पोस्ट करें AJAX अनुरोध: कब और कैसे उपयोग करें?
- 13. कोडइग्निटर: WHERE क्लॉज और OR क्लॉज का उपयोग कैसे करें
- 14. viewDidLoad का उपयोग कब करें और awakeFromNib
- 15. क्यों और कब __noop का उपयोग करें?
- 16. आरएसपीसी कहानियां और चश्मा: कब उपयोग करें?
- 17. IEquatable का उपयोग कब करें और क्यों
- 18. स्टब्स और मोजे का उपयोग कब करें?
- 19. एसएसएल - इसका उपयोग कैसे करें और कब
- 20. गुण और विधियों का उपयोग कब करें?
- 21. टैग/लेबल का उपयोग कब करें और शाखा कब करें?
- 22. डीडब्लूस्क्रिप्ट और इसके डीबगर
- 23. LINQ का उपयोग क्यों करें और कब करें?
- 24. बाइट सरणी और जब बाइट बफर का उपयोग कब करें?
- 25. सी ++ में "नया" और कब नहीं, कब उपयोग करें?
- 26. OSGi EventAdmin का उपयोग कब करें और कब नहीं?
- 27. डेटाबेस दृश्यों का उपयोग कब करें और कब नहीं?
- 28. .mdf और कब .sdf का उपयोग कब करें?
- 29. डब्ल्यूसीएफ डेटा सेवाओं का उपयोग कब करें और कब नहीं?
- 30. Django ModelChoiceField - आईडी के अलावा कुछ और उपयोग करें?
संभव डुप्लिकेट http://stackoverflow.com/questions/55013/should-i: यहाँ एक साधारण परीक्षण है कि andalso के नाटकीय प्रभाव का पता चलता है -वेवे-उपयोग-द-एंडलसो-एंड-ओरेसे-ऑपरेटर) –
बस वीबीएनईटी (वीबी के लिए कई वर्षों में पहली बार) का उपयोग शुरू किया। मैं केवल इस विशिष्ट प्रश्न पूछने के लिए ऑनलाइन आया था। @aer और उनके बहुत से लोगों को धन्यवाद जिन्होंने उनके महान उत्तरों के साथ स्पष्ट किया। – Hardryv