Вопрос по поиску члена Enum в C # - PullRequest
2 голосов
/ 16 декабря 2010

Как я могу быстро найти свой enum obj и узнать, что enum obj включает / не включает другой входной элемент?

public enum myen
{
    S1,
    S2,
    S3,
}

other member like s2 or s4.

 intput   s2 -> true;  // included
 input    s4 -> false;  // not include

Ответы [ 2 ]

2 голосов
/ 16 декабря 2010

Я рекомендую написать свою собственную версию Enum.IsDefined(), основанную на обобщениях, которая кэширует результаты, а не упаковывает и распаковывает значения;это может привести к «быстрому» поиску, который вы указали в своем вопросе.

2 голосов
/ 16 декабря 2010

Enum.IsDefined или используйте Enum.GetNames в зависимости от того, какой ввод у вас есть.

// => true
Console.WriteLine( Enum.GetNames(typeof(myen)).Any(member => member.Equals("S3")) );
Console.WriteLine( Enum.IsDefined(typeof(myen), "S3" ));
Console.WriteLine( Enum.IsDefined(typeof(myen), 2 ));

// => false
Console.WriteLine( Enum.GetNames(typeof(myen)).Any(member => member.Equals("S4")) );
Console.WriteLine( Enum.IsDefined(typeof(myen), "S4" ));
Console.WriteLine( Enum.IsDefined(typeof(myen), 3 ));
...