Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में एनम के कॉन्स्टेंट्स के मानों का ऐरे प्राप्त करना (GetEnumValues)

Type.GetEnumValues() मेथड एनमरेशन टाइप के सभी कॉन्स्टेंट्स के मानों का ऐरे लौटाता है। यह केवल एनम टाइप्स पर काम करता है - अन्य टाइप्स पर ArgumentException फेंकता है।

उदाहरण 1: गलत टाइप पर GetEnumValues (एक्सेप्शन)

using System;

public class Demo {
    public enum Vehicle { Car, Bus, Bike, Airplane }
    
    public static void Main() {
        try {
            // गलत: typeof(int) एनम नहीं है
            Type type = typeof(int);
            string[] names = type.GetEnumNames(); // ArgumentException
            Console.WriteLine("कॉन्स्टेंट नाम = " + string.Join(", ", names));
            
            Array values = type.GetEnumValues(); // ArgumentException
            Console.WriteLine("मान = " + values);
        }
        catch (ArgumentException e) {
            Console.WriteLine("एनम नहीं है! " + e.GetType().Name + ": " + e.Message);
        }
    }
}

आउटपुट

एनम नहीं है! ArgumentException: Type must be an Enum.

उदाहरण 2: सही एनम टाइप पर GetEnumValues

using System;

public class Demo {
    public enum Vehicle { Car, Bus, Bike, Airplane }
    
    public static void Main() {
        try {
            Vehicle v = Vehicle.Bike;
            Type type = v.GetType(); // Vehicle एनम टाइप
            
            // एनम नाम प्राप्त करें
            string[] names = type.GetEnumNames();
            Console.WriteLine("कॉन्स्टेंट नाम = " + string.Join(", ", names));
            
            // अंडरलाइंग टाइप (डिफ़ॉल्ट int)
            Type underlying = type.GetEnumUnderlyingType();
            Console.WriteLine("अंडरलाइंग टाइप = " + underlying);
            
            // सभी मान प्राप्त करें
            Array values = type.GetEnumValues();
            Console.WriteLine("मान ऐरे टाइप = " + values.GetType().Name);
            
            Console.WriteLine("\nकॉन्स्टेंट्स और मान...");
            foreach (var name in names) {
                object value = Enum.Parse(type, name);
                Console.WriteLine("{0} = {1}", name, value);
            }
        }
        catch (ArgumentException e) {
            Console.WriteLine("एनम नहीं है! " + e.Message);
        }
    }
}

आउटपुट

कॉन्स्टेंट नाम = Car, Bus, Bike, Airplane
अंडरलाइंग टाइप = System.Int32
मान ऐरे टाइप = Vehicle[]

कॉन्स्टेंट्स और मान...
Car = 0
Bus = 1
Bike = 2
Airplane = 3

एनम रिफ्लेक्शन मेथड्स सारांश

मेथडविवरणरिटर्न
GetEnumNames()कॉन्स्टेंट नामों का ऐरेstring[]
GetEnumValues()कॉन्स्टेंट मानों का ऐरेArray
GetEnumUnderlyingType()अंडरलाइंग इंटीजर टाइपType
IsEnumक्या एनम टाइप है?bool
GetFields()फील्ड्स (कॉन्स्टेंट्स + value__)FieldInfo[]

एनम मानों को टाइप-सुरक्षित ऐरे के रूप में प्राप्त करना

// जेनेरिक तरीका (.NET Core / .NET 5+)
Vehicle[] vehicles = (Vehicle[])Enum.GetValues(typeof(Vehicle));

// या LINQ के साथ
var vehicleList = Enum.GetValues(typeof(Vehicle)).Cast<Vehicle>().ToList();

// नाम-मान पेयर्स
var nameValuePairs = Enum.GetNames(typeof(Vehicle))
    .Zip(Enum.GetValues(typeof(Vehicle)).Cast<int>(), (n, v) => new { Name = n, Value = v });

फ्लैग्स एनम के लिए

[Flags]
public enum FileAccess { None = 0, Read = 1, Write = 2, Execute = 4 }

var combined = FileAccess.Read | FileAccess.Write; // 3
var values = Enum.GetValues(typeof(FileAccess)).Cast<FileAccess>();
// values: None, Read, Write, Execute (कॉम्बिनेशन नहीं)

महत्वपूर्ण नोट्स

  • GetEnumValues() केवल परिभाषित कॉन्स्टेंट्स लौटाता है, सभी संभावित बिट कॉम्बिनेशंस नहीं।
  • लौटाया गया ऐरे एनम टाइप का होता है (उदाहरण: Vehicle[])।
  • कॉल करने से पहले type.IsEnum से जांचें।
  • Enum.GetValues() स्टैटिक मेथड अधिक सुविधाजनक है।
  1. - C# में वर्तमान इंस्टेंस का प्रकार प्राप्त करें

    C# में किसी ऑब्जेक्ट के वर्तमान इंस्टेंस का प्रकार प्राप्त करने के लिए, हम GetType() मेथड का उपयोग करते हैं। यह मेथड System.Object से विरासत में मिला है और ऑब्जेक्ट के रनटाइम प्रकार को दर्शाने वाला Type ऑब्जेक्ट लौटाता है। यह रिफ्लेक्शन और डिबगिंग के लिए उपयोगी है। उदाहरण 1: स्ट्रिंग का प्रकार प्र

  1. - C# में StringDictionary के मानों का कलेक्शन प्राप्त करें

    उदाहरण StringDictionary की Keys प्रॉपर्टी कुंजियों का ICollection लौटाती है। मानों को कुंजी के माध्यम से एक्सेस किया जा सकता है। इस उदाहरण में कुंजियों को ऐरे में कॉपी करके कुंजी-मान जोड़े प्रिंट किए गए हैं। using System; using System.Collections; using System.Collections.Specialized; public class

  1. - C# में जॅग्ड सरणी के तत्वों का प्रकार क्या है?

    एक जॅग्ड सरणी सरणियों की एक सरणी है, और इसलिए इसके तत्व रेफरेंस प्रकार हैं और null से प्रारंभ होते हैं।आइए देखें कि जॅग्ड सरणी के साथ कैसे काम करें:एक जॅग्ड सरणी घोषित करें:int[][] marks;अब, इसे प्रारंभ करें, जहां marks 5 पूर्णांकों की सरणियों की एक सरणी है:int[][] marks = new int[][]{new int[]{ 40,