कैसे जांचें कि क्या किसी एनम में एक संख्या है?


79

मेरे पास एक Enum है:

 public enum PromotionTypes
{
    Unspecified = 0, 
    InternalEvent = 1,
    ExternalEvent = 2,
    GeneralMailing = 3,  
    VisitBased = 4,
    PlayerIntroduction = 5,
    Hospitality = 6
}

मैं यह जांचना चाहता हूं कि क्या इस एनम में एक संख्या है जो मैं देता हूं। उदाहरण के लिए: जब मैं 4 देता हूं, तो Enum में वह होता है, इसलिए मैं True लौटना चाहता हूं, यदि मैं 7 देता हूं, तो इस Enum में 7 नहीं है, इसलिए यह गलत है। मैं Enum.IsDefine की कोशिश की, लेकिन यह केवल स्ट्रिंग मूल्य की जाँच करें। मैं उसे कैसे कर सकता हूँ?


के संभावित डुप्लिकेट मान्य Enum मान
नीले

जवाबों:


180

IsDefinedविधि की आवश्यकता है दो पैरामीटरपहले पैरामीटर गणन के प्रकार के जांच की जानी है । यह प्रकार आमतौर पर टाइपोफ़ अभिव्यक्ति का उपयोग करके प्राप्त किया जाता है। दूसरा पैरामीटर एक बुनियादी वस्तु के रूप में परिभाषित किया गया है । इसका उपयोग पूर्णांक मान या एक स्ट्रिंग को निर्दिष्ट करने के लिए किया जाता है जिसमें खोजने के लिए स्थिर नाम होता है। रिटर्न वैल्यू एक बूलियन है जो सच है यदि मान मौजूद है और यदि ऐसा नहीं है तो गलत है।

enum Status
{
    OK = 0,
    Warning = 64,
    Error = 256
}

static void Main(string[] args)
{
    bool exists;

    // Testing for Integer Values
    exists = Enum.IsDefined(typeof(Status), 0);     // exists = true
    exists = Enum.IsDefined(typeof(Status), 1);     // exists = false

    // Testing for Constant Names
    exists = Enum.IsDefined(typeof(Status), "OK");      // exists = true
    exists = Enum.IsDefined(typeof(Status), "NotOK");   // exists = false
}

स्रोत


8

इसे इस्तेमाल करे:

IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes))
                              .OfType<PromotionTypes>()
                              .Select(s => (int)s);
if(values.Contains(yournumber))
{
      //...
}

7

आपको उपयोग करना चाहिए Enum.IsDefined

मैं Enum.IsDefine की कोशिश की, लेकिन यह केवल स्ट्रिंग मूल्य की जाँच करें।

मुझे 100% यकीन है कि यह कम से कम मेरी मशीन पर स्ट्रिंग मूल्य और इंट (अंतर्निहित) मूल्य दोनों की जांच करेगा।


1
Thx, यह मेरी गलतियाँ हैं, मैं स्ट्रिंग को Int में बदलना भूल गया, इसलिए Enum.isDefined हमेशा सही होने पर गलत मिलता है।
जैक झांग

यह निश्चित रूप से (केस-संवेदी स्ट्रिंग प्रतिनिधित्व) ले सकता है - अधिक जानकारी के लिए डॉक्स या स्रोत देखें ।
वाई हा ली

4

हो सकता है कि आप स्ट्रिंग मान की एनम की जांच और उपयोग करना चाहते हैं:

string strType;
if(Enum.TryParse(strType, out MyEnum myEnum))
{
    // use myEnum
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.