关于在C#中查找枚举成员的问题

时间:2010-12-16 05:35:19

标签: c# enums c#-2.0

如何快速查找我的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 个答案:

答案 0 :(得分:2)

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 ));

答案 1 :(得分:2)

我建议您编写自己的Enum.IsDefined()版本,该版本基于泛型,并缓存结果而不是装箱和取消装箱值;这可能导致您在问题中说明的“快速”查询。