कई बार मैं ध्वज enum घोषणाओं को देखता हूं जो हेक्साडेसिमल मानों का उपयोग करते हैं। उदाहरण के लिए:फ्लैग एनम्स आमतौर पर हेक्साडेसिमल मानों के साथ परिभाषित क्यों होते हैं
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
जब मैं एक enum की घोषणा, मैं आमतौर पर इसे इस तरह की घोषणा:
[Flags]
public enum MyEnum
{
None = 0,
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
Flag5 = 16
}
एक कारण या क्यों कुछ लोग दशमलव के बजाय हेक्साडेसिमल में मूल्य लिखने के लिए चयन करने के लिए तर्क है ? जिस तरह से मैं इसे देखता हूं, हेक्स मानों का उपयोग करते समय उलझन में जाना आसान होता है और Flag5 = 0x10
के बजाय गलती से Flag5 = 0x16
लिखना आसान होता है।
यदि आपने दशमलव संख्याओं का उपयोग किया है तो आप '0x10' के बजाय' 10' लिखेंगे? विशेष रूप से ये बाइनरी संख्याएं हैं जिनसे हम काम कर रहे हैं, और हेक्स बाइनरी से/छोटे रूप से परिवर्तनीय है? '0x111'' 273' से किसी के सिर में अनुवाद करने के लिए बहुत कम परेशान है ... – cHao
यह एक शर्म की बात है कि सी # में एक वाक्यविन्यास नहीं है जिसे स्पष्ट रूप से दो की शक्तियों को लिखने की आवश्यकता नहीं है। –
आप यहां कुछ बकवास कर रहे हैं। झंडे के पीछे का इरादा यह है कि वे थोड़ा सा संयुक्त होंगे। लेकिन bitwise संयोजन प्रकार के तत्व नहीं हैं। मान 'फ्लैग 1 | Flag2' 3 है, और 3 'MyEnum' के किसी भी डोमेन मान से मेल नहीं खाता है। – Kaz