关于C#中查找Enum成员的问题

发布于 2024-10-08 12:35:50 字数 225 浏览 3 评论 0原文

如何快速查找枚举 obj 并找出枚举 obj 包含/不包含另一个输入成员?

public enum myen
{
    S1,
    S2,
    S3,
}

other member like s2 or s4.

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

How can I rapidly look up my enum obj and find out the enum obj include/not include another input member?

public enum myen
{
    S1,
    S2,
    S3,
}

other member like s2 or s4.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

相权↑美人 2024-10-15 12:35:50

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

Enum.IsDefined or use Enum.GetNames based on what is the input that you have.

// => 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 ));
最美的太阳 2024-10-15 12:35:50

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

I recommend writing your own version of Enum.IsDefined() that's based on generics, and that caches results instead of boxing and unboxing the values; that can result in the "rapid" lookup you stated in your question.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文