एक एनम चर, किसी को पता है कि क्या यह हमेशा पहले तत्व के लिए डिफ़ॉल्ट है?
एक एनम चर, किसी को पता है कि क्या यह हमेशा पहले तत्व के लिए डिफ़ॉल्ट है?
जवाबों:
यह गणना का सदस्य है जो मूल्य का प्रतिनिधित्व करता है 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। यह बहुत बेवकूफी