के साथ क्यों किया जाता है यह एक आसान और सरल सवाल हो सकता है लेकिन मुझे अभी भी थोड़ा उलझन है कि क्यों bitwise OR
का उपयोग करने का निर्णय लिया गया है। मान लें कि मैं एक वर्ग A
है चार क्षेत्रों के साथ:क्यों झटके या ऑपरेटर का उपयोग ध्वज enum में अर्थ और
class A
{
private int Field1;
private static int Field2;
public int Field3;
public static int Field4;
}
और Reflection
का उपयोग क्षेत्रों पाने के लिए:
var fields = typeof (A).GetFields(BindingFlags.Public | BindingFlags.Static);
आप Reflection
साथ नौसिखिया रहे हैं और कैसे BindingFlags
, उपयोग करने के लिए जिस तरह से पता नहीं है आपके सिर में प्रारंभिक तर्क सोच होगी:
यह पंक्ति सभी स्थिर या सार्वजनिक फ़ील्ड का चयन करेगी क्योंकि bitwise या उपयोग किया जाता है। और उम्मीद परिणाम आपको लगता है:
Field2
Field3
Field4
लेकिन जब F5 मार, परिणाम पूरी तरह से अलग हो जाएगा, बिटवाइज़ AND
रूप OR
काम करता है:
Field4
बिटवाइज़ AND ऑपरेटर का प्रयोग क्यों नहीं है जिसके साथ पालन हो सकता है तर्क सोच इस तरह:
var fields = typeof (A).GetFields(BindingFlags.Public & BindingFlags.Static);
मैं MSDN में शब्द पाया:
बिटवाइज़ या आपरेशन झंडे गठबंधन करने के लिए प्रयोग किया जाता है कि कुछ परिस्थितियों सरल कार्य के लिए आवश्यक नहीं किया जाना चाहिए में एक उन्नत अवधारणा पर विचार किया जा सकता है।
कृपया किसी अग्रिम अवधारणा यहाँ में सरल तरीके से समझने के लिए समझा सकता है?
'या' समावेशी और अनन्य OR के बीच अंतर पर विचार करते समय 'OR 'सही अवधारणा प्रतीत होता है। इस मामले में 'OR' समावेशी है, जैसा कि "मुझे अंडे या हैम वाले स्टोर से कुछ आइटम उठाएं" कहें। यह कहने से अलग है कि "अंडे और हैम" होते हैं। –
[एमएसडीएन] में (http://msdn.microsoft.com/en-us/library/6ztex2dc.aspx) आप पढ़ते हैं: आपको या तो बाइंडिंगफ्लैग निर्दिष्ट करना होगा। ** ** ** ** बाइंडिंगफ्लैग्स। स्टेटस रिटर्न पाने के लिए । तो हो सकता है कि आप एक ही समय में आवृत्ति ** और ** स्थैतिक सूची नहीं दे सकते ... ?? – tschmit007
@ tschmit007: इस सवाल के साथ क्या करना है? –