How to check If a Enum contain a number?

后端 未结 4 1388
遥遥无期
遥遥无期 2021-02-02 05:06

I have a Enum like this:

 public enum PromotionTypes
{
    Unspecified = 0, 
    InternalEvent = 1,
    ExternalEvent = 2,
    GeneralMailing = 3,  
    VisitBas         


        
相关标签:
4条回答
  • 2021-02-02 05:25

    Maybe you want to check and use the enum of the string value:

    string strType;
    if(Enum.TryParse(strType, out MyEnum myEnum))
    {
        // use myEnum
    }
    
    0 讨论(0)
  • 2021-02-02 05:29

    Try this:

    IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes))
                                  .OfType<PromotionTypes>()
                                  .Select(s => (int)s);
    if(values.Contains(yournumber))
    {
          //...
    }
    
    0 讨论(0)
  • 2021-02-02 05:34

    The IsDefined method requires two parameters. The first parameter is the type of the enumeration to be checked. This type is usually obtained using a typeof expression. The second parameter is defined as a basic object. It is used to specify either the integer value or a string containing the name of the constant to find. The return value is a Boolean that is true if the value exists and false if it does not.

    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
    }
    

    SOURCE

    0 讨论(0)
  • 2021-02-02 05:42

    You should use Enum.IsDefined.

    I tried Enum.IsDefine but it only check the String value.

    I'm 100% sure it will check both string value and int(the underlying) value, at least on my machine.

    0 讨论(0)
提交回复
热议问题