==
ऑपरेटर द्वारा किए गए समानता परीक्षण =
ऑपरेटर द्वारा किए गए असाइनमेंट पर प्राथमिकता लेता है। इसलिए, isDir
वैरिएबल true
के बराबर सेट किया जाएगा यदि ==
ऑपरेटर के दोनों पक्ष बराबर हैं, अन्यथा यह false
पर सेट किया जाएगा। दूसरे शब्दों में, यह कहने के बराबर है:
if ((File.GetAttributes(path) & FileAttributes.Directory) == FileAttributes.Directory)
isDir = true;
else
isDir = false;
यह वीबी.नेट में संभव है। मैं अन्य भाषाओं के लिए जवाब नहीं दे सकता। VB.NET में, बराबर होगा:
Dim isDir As Boolean = ((File.GetAttributes(path) And FileAttributes.Directory) = FileAttributes.Directory)
वीबी के बाद से, दोनों यह काम और समानता परीक्षण ऑपरेटरों है के लिए एक ही चरित्र (=
) का उपयोग करता है यह आप संदर्भ के आधार पर प्रदर्शन कर रहे हैं जो आपरेशन निर्धारित करता है। वीबी कंपाइलर यह जानकर काफी समझदार है कि पहले =
ऑपरेटर एक असाइनमेंट है और दूसरा एक समानता परीक्षण है। हालांकि, यह स्पष्ट रूप से भ्रमित है, इसलिए इसे अक्सर पठनीयता के लिए निराश किया जाता है। यह विशेष रूप से अन्य भाषाओं में पृष्ठभूमि वाले लोगों के लिए भ्रमित है। उदाहरण के लिए, सी # में, आप एक ही मूल्य के लिए दो चर सेट करने के लिए निम्न कर सकता है:
int y;
int x = y = 5; // Both x and y will be set to 5
=
हमेशा एक असाइनमेंट ऑपरेटर है, और काम अभिव्यक्ति हमेशा के लिए मूल्यांकन करता है क्योंकि कारण यह है कि सी # में होता है (रिटर्न) असाइन किया गया मान। इसलिए, इस मामले में, अभिव्यक्ति y = 5
न केवल वैरिएबल y
पर मान 5 निर्दिष्ट करती है, लेकिन यह 5 के मान के मूल्यांकन भी करती है। इसलिए, जब आप उस अभिव्यक्ति के मान पर x
सेट करते हैं, तो यह 5 पर भी सेट हो जाता है। वीबी में, हालांकि, परिणाम बहुत अलग है:
Dim y As Integer
Dim x As Integer = y = 5
वीबी में, संकलक, समझेंगे कि अभिव्यक्ति y = 5
एक समानता परीक्षण है, इसलिए यह False
करने का मूल्यांकन करेंगे। इसलिए, यह x = False
सेट करने का प्रयास करेगा जो Option Strict
के मान के आधार पर काम कर सकता है या नहीं।
निश्चित रूप से आपने 'बूलियन नंबरEqualsFive = num == 5', कोड जैसे कोड लिखे हैं? –
[प्राथमिकता और मूल्यांकन के आदेश] के लिए कुछ और संदर्भ (http://msdn.microsoft.com/en-us/library/2bxt6kc4.aspx) और [यहां विशेष रूप से सी # के लिए] (http://msdn.microsoft.com /en-us/library/aa691323(v=vs.71).aspx) –
यह कोड 'File.GetAttributes' के परिणाम को गीला कर देता है, जिसमें बाइनरी ध्वज बिट' FileAttributes.Directory' शामिल है। –