2011-02-17 12 views
7
public enum Animal 
{ 
    Dog = 1, 
    Cat = 2, 
    Cow = 3 
} 

int animalID = 4; 
if ((Animal)animalID == Animal.Dog) // does not throw exception 

पशु आईडी Animal पर नहीं डाला जा सकता है।
पूर्णांक में enum कास्टिंग करते समय मुझे InvalidCastException क्यों नहीं मिलता है?पूर्णांक में enum कास्टिंग करते समय मुझे अवैध कैस्ट अपवाद क्यों नहीं मिलता है?

+0

डैनियल यदि आप वास्तव में एक और वस्तु के लिए डाली निर्दिष्ट करेंगे और काम के बाद वस्तु के मूल्य की जाँच क्या होता है हो सकता है ? आप बस == की तुलना कर रहे हैं जो एक मूल्य वापस करता है लेकिन असल में वास्तव में कुछ भी असाइन नहीं कर रहा है ... –

+1

संभावित डुप्लिकेट [सी # में enums को कास्टिंग इंक] (http://stackoverflow.com/questions/1758321/casting- ints-to-enums-in-c) –

+1

इसे भी देखें: http://stackoverflow.com/questions/618305/enum-casting – PHeiberg

उत्तर

9

क्योंकि यह एक अवैध कलाकार नहीं है।

आपके द्वारा कास्टिंग मूल्य से enum (इस मामले में) के लिए है, लेकिन यह अमान्य नहीं है।

चूंकि एक enum के लिए अनुमोदित प्रकार बाइट, sbyte, लघु, ushort, int, uint, लंबे, या पूर्णांक से enum से एक कलाकार के रूप में पूरी तरह से कानूनी है।

Source - MSDN

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

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