Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于在C中查找枚举成员的问题#_C#_Enums_C# 2.0 - Fatal编程技术网

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

C# 关于在C中查找枚举成员的问题#,c#,enums,c#-2.0,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 或者根据您的输入使用Enum.GetNames // => true Console.WriteLine( E

如何快速查找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
或者根据您的输入使用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 ));

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

您到底想完成什么?这是非常伪代码,不是很清楚。你所说的输入成员是什么意思?@Josh,在我的原始帖子中,我应该使用定义为或不是的关键字。谢谢。我找不到已定义的
方法。它在哪里?谢谢。@Nano-它是枚举类上的一个静态方法。确保您在源文件中“使用系统”,以便可以访问系统命名空间。但是,假设这是一个效率问题,那么这不是“快速的”。我发现了它。谢谢你的细节输入。+ 1它使用反射-所以在把它嵌入到PyfStime/Frq调用区域之前考虑其他选项。它使用反射,但是如果你经常做同样的检查(同样的枚举),那实际上并不是那么糟糕,因为对象是在内部缓存的;如果缓存耗尽(因为不同的枚举正在一个接一个地被检查),并且实际上必须发生反射,则这一点变得非常重要。