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

C# में Type.GetEnumValues() मेथड

विवरण

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

सिंटैक्स

public virtual Array GetEnumValues();

उदाहरण 1: गैर-एनम प्रकार पर त्रुटि

using System;

public class Demo {
    enum Vehicle { Car, Bus, Bike, Airplane }
    
    public static void Main() {
        try {
            Type type = typeof(int); // गैर-एनम प्रकार
            string[] str = type.GetEnumNames();
            Console.WriteLine("GetEnumNames() = " + str);
            
            Type type2 = type.GetEnumUnderlyingType();
            Console.Write("एनम अंतर्निहित प्रकार = " + type2);
            
            Array arrObj = type.GetEnumValues();
            Console.Write("मान = {0}", arrObj);
            
            Console.WriteLine("\nकॉन्स्टेंट्स सूचीबद्ध...");
            for (int i = 0; i < str.Length; i++)
                Console.Write("{0} ", str[i]);
        }
        catch (ArgumentException e) {
            Console.WriteLine("एनम नहीं!");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

आउटपुट

एनम नहीं! System.ArgumentException

उदाहरण 2: सही एनम उपयोग

using System;

public class Demo {
    enum Vehicle { Car, Bus, Bike, Airplane }
    
    public static void Main() {
        try {
            Vehicle v = Vehicle.Bike;
            Type type = v.GetType();
            
            string[] str = type.GetEnumNames();
            Console.WriteLine("GetEnumNames() = " + str);
            
            Type type2 = type.GetEnumUnderlyingType();
            Console.Write("एनम अंतर्निहित प्रकार = " + type2);
            
            Array arrObj = type.GetEnumValues();
            Console.Write("मान = " + arrObj);
            
            Console.WriteLine("\nकॉन्स्टेंट्स सूचीबद्ध...");
            for (int i = 0; i < str.Length; i++)
                Console.Write("{0} ", str[i]);
        }
        catch (ArgumentException e) {
            Console.WriteLine("एनम नहीं!");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

आउटपुट

GetEnumNames() = System.String[]
एनम अंतर्निहित प्रकार = System.Int32
मान = Demo+Vehicle[]
कॉन्स्टेंट्स सूचीबद्ध...
Car Bus Bike Airplane

व्यावहारिक उपयोग

// मानों को टाइप्ड ऐरे के रूप में प्राप्त करें
Vehicle[] values = (Vehicle[])Enum.GetValues(typeof(Vehicle));
// या
Array enumValues = typeof(Vehicle).GetEnumValues();
foreach (Vehicle v in enumValues) {
    Console.WriteLine($"{v} = {(int)v}");
}

मुख्य बिंदु

  • केवल एनम प्रकारों पर मान्य; अन्यथा ArgumentException।
  • मान अंतर्निहित प्रकार के रूप में लौटाए जाते हैं (डिफ़ॉल्ट int)।
  • वापस किया गया ऐरे कॉपी नहीं है; इसे संशोधित न करें।
  • Enum.GetValues() पसंदीदा स्थैतिक विकल्प है।
  1. - C# में Type.GetDefaultMembers() मेथड

    C# में Type.GetDefaultMembers() मेथड का उपयोग वर्तमान Type के लिए परिभाषित उन सदस्यों को खोजने के लिए किया जाता है जिनका DefaultMemberAttribute सेट है। सिंटैक्स public virtual System.Reflection.MemberInfo[] GetDefaultMembers (); आइए Type.GetDefaultMembers() मेथड को लागू करने का एक उदाहरण देखते हैं

  1. - C# में Type.GetArrayRank() मेथड

    C# में Type.GetArrayRank() मेथड एक सरणी में आयामों की संख्या प्राप्त करता है। सिंटैक्स public virtual int GetArrayRank (); आइए Type.GetArrayRank() मेथड को लागू करने का एक उदाहरण देखते हैं - उदाहरण using System; public class Demo { public static void Main(string[] args) { Type type =

  1. - C# में Type.Equals() मेथड

    C# में Type.Equals() मेथड यह निर्धारित करता है कि वर्तमान Type का अंतर्निहित सिस्टम प्रकार निर्दिष्ट ऑब्जेक्ट या Type के अंतर्निहित सिस्टम प्रकार के समान है या नहीं। सिंटैक्स public virtual bool Equals (Type o); public override bool Equals (object o); ऊपर, पैरामीटर वे ऑब्जेक्ट हैं जिनके अंतर्निहित