एक एनम चर, किसी को पता है कि क्या यह हमेशा पहले तत्व के लिए डिफ़ॉल्ट है?
एक एनम चर, किसी को पता है कि क्या यह हमेशा पहले तत्व के लिए डिफ़ॉल्ट है?
जवाबों:
यह गणना का सदस्य है जो मूल्य का प्रतिनिधित्व करता है 0
। विशेष रूप से, प्रलेखन से :
एक का डिफ़ॉल्ट मान
enum E
अभिव्यक्ति द्वारा उत्पादित मूल्य है(E)0
।
एक उदाहरण के रूप में, निम्नलिखित एनम को लें:
enum E
{
Foo, Bar, Baz, Quux
}
, मूलभूत मूल्यों अधिभावी मुद्रण के बिना default(E)
रिटर्न Foo
के बाद से यह पहली बार होने वाली तत्व है।
हालांकि, यह हमेशा ऐसा नहीं होता है कि 0
पहले सदस्य द्वारा एक एनम का प्रतिनिधित्व किया जाता है। उदाहरण के लिए, यदि आप ऐसा करते हैं:
enum F
{
// Give each element a custom value
Foo = 1, Bar = 2, Baz = 3, Quux = 0
}
छपाई default(F)
आपको देगी Quux
, नहीं Foo
।
यदि किसी एनम में कोई भी तत्व इसके G
अनुरूप नहीं है 0
:
enum G
{
Foo = 1, Bar = 2, Baz = 3, Quux = 4
}
default(G)
शाब्दिक रूप से रिटर्न देता है 0
, हालांकि इसका प्रकार G
(डॉक्स द्वारा ऊपर दिए गए उद्धरण के अनुसार एक प्रकार के रूप में उद्धृत) रहता है।
'\0'
या उससे मेल नहीं खाता है default(char)
, जो तब से बहुत अधिक संभावना नहीं हैdefault(char)
NUL चरित्र है जो चार कोड 0. से मेल खाती है
DefaultValue
विशेषता का उपयोग करते हुए - कुछ-कुछ जैसे System.ComponentModel.DefaultValue(MyEnum.Blah)
व्यवहार को संशोधित करता है, default(MyEnum)
लेकिन यह अभी भी पैदावार करता है। 0. क्या enum
इसके डिफ़ॉल्ट मान के आसपास कोई अमूर्त बनाने का कोई तरीका नहीं है ?
मुझे लगता है कि यह काफी खतरनाक है कि किसी एनम में मूल्यों के आदेश पर भरोसा किया जाए और यह मान लिया जाए कि पहला हमेशा डिफ़ॉल्ट होता है। यदि आप डिफ़ॉल्ट मान की सुरक्षा के बारे में चिंतित हैं तो यह अच्छा अभ्यास होगा।
enum E
{
Foo = 0, Bar, Baz, Quux
}
अन्यथा, यह सब लेता है आदेश का एक लापरवाह रिफ्लेक्टर है और आपको पूरी तरह से अलग डिफ़ॉल्ट मिला है।
Foo
के बाद Bar
दोनों Foo
और Bar
का मान 0 जाएगा और E.Foo == E.Bar
वापस आ जाएगी true
। यह बहुत बेवकूफी