2013-09-10 4 views
11

Enum शब्दकोश के रूप में चाबियाँ

enum SomeEnum { One, Two, Three }; 

SomeEnum के लिए मान लीजिए कि एक enum है Enum करने के लिए कुछ नहीं?

+0

([Enum] पर एक नज़र http://msdn.microsoft.com/en-us/library/system.enum लें:

निष्कर्ष आप प्रकार वास्तव में निर्दिष्ट करने के लिए होता है। aspx)। –

+0

@ एलेसेंड्रो डी'और्रिया [* "गणना के लिए आधार वर्ग प्रदान करता है।" *] (Http://msdn.microsoft.com/en-us/library/system.enum.aspx) – GolfWolf

+0

दस्तावेज़ीकरण की पहली पंक्ति: आधार प्रदान करता है गणना के लिए कक्षा। एक बेस क्लास माता-पिता वर्ग नहीं है? – sblandin

उत्तर

17

मुझे विश्वास है कि covariance की वजह से है।

संक्षेप में:

aDictionary एक Dictionary<SomeEnum, SomeClass> होगा, लेकिन वर्तमान संदर्भ में यह Dictionary<Enum, SomeClass> के रूप में जाना जाता है।

अपने घोषणा इजाजत दी गई थी, संकलक बाद में आप कर देना चाहिए:

aDictionary.Add(someValueFromAnotherEnumUnrelatedToSomeEnum, aValue); 

जो स्पष्ट रूप से शब्दकोश की वास्तविक प्रकार के संबंध में असंगत है।

यही कारण है कि डिफ़ॉल्ट रूप से सह-भिन्नता की अनुमति नहीं है और आपको इसे स्पष्ट रूप से उन मामलों में सक्षम करना होगा जहां यह समझ में आता है।

Dictionary<SomeEnum, SomeClass> aDictionary = 
    new Dictionary<SomeEnum, SomeClass>(); 
+7

से असाइन किया जा सकता है इसकी कॉन्वर्सिस +1 मेरे रूपक की संभावित क्रैसनेस बहाना है। एक मुट्ठी हाथ का एक प्रकार है लेकिन आप नहीं सोच सकते कि मुट्ठी नौकरी हाथ का काम है। यह सब नौकरी की आपकी परिभाषा के लिए आता है। – Jodrell

+3

@ जोड्रेल वाह, यह कभी भी सुनाई गई कॉन्वर्सिस को समझाने का सबसे अच्छा तरीका हो सकता है। :) मुझे लगता है कि एमएस को इसे सह (कॉन्ट्रैक्ट) भिन्न एमएसडीएन पेज पर पोस्ट करना चाहिए। – GolfWolf

1

इसकी घोषणा में एनम एक वर्ग नहीं है जो कुछ ईनम के बराबर है। यह

Dictionary<SomeEnum, SomeClass> aDictionary = new Dictionary<SomeEnum, SomeClass>(); 
+0

नहीं, लेकिन 'एनम' 'SomeEnum' – GolfWolf

संबंधित मुद्दे