सी # में enums के साथ मज़ा। एक सामान्य सूची लें जिसे कुछ एनम स्टोर करने के लिए बनाया गया है जिसे आपने पहले परिभाषित किया था और इसमें कुछ आइटम जोड़े थे। Foreach या GetEnumerator<T>()
के साथ Iterate लेकिन मूल तो कुछ अन्य enum निर्दिष्ट करें और देखें कि क्या होता है। मैं अमान्यकास्टएक्सप्शन या ऐसा कुछ करने की उम्मीद कर रहा था लेकिन यह पूरी तरह से काम करता है :)। कारें और पशु: क्या एनम्स केवल पूर्णांक, प्रकार या दोनों का नाम नहीं है?
public enum Cars
{
Honda = 0,
Toyota = 1,
Chevrolet = 2
}
public enum Animals
{
Dog = 0,
Cat = 1,
Tiger = 2
}
और मुख्य विधि में ऐसा करते हैं:
public static void Main()
{
List<Cars> cars = new List<Cars>();
List<Animals> animals = new List<Animals>();
cars.Add(Cars.Chevrolet);
cars.Add(Cars.Honda);
cars.Add(Cars.Toyota);
foreach (Animals isItACar in cars)
{
Console.WriteLine(isItACar.ToString());
}
Console.ReadLine();
}
यह इस प्रिंट होगा
उदाहरण के लिए के लिए एक सरल सांत्वना आवेदन लेने के लिए और वहाँ दो enums बना सकते हैं कंसोल में:
Tiger Dog Cat
ऐसा क्यों हो रहा है? मेरा पहला अनुमान यह था कि enum वास्तव में एक प्रकार नहीं है, यह सिर्फ और int है लेकिन यह सच नहीं है: अगर हम लिखते हैं:
Console.WriteLine(Animals.Tiger.GetType().FullName);
हम उसका पूर्ण योग्य नाम मुद्रित करेंगे! तो यह क्यों?
हाँ बहुत अच्छा जवाब। मुझे अब एहसास है कि किसी भी प्रकार के enums के बीच स्पष्ट कास्ट विफल नहीं होगा क्योंकि वे व्यावहारिक रूप से एक पूर्णांक हैं, और समस्या की जड़ थी। – Aleksandar