我有一个很基本的问题:如何检查枚举值列表中是否包含给定值?
例如,我有这个枚举:
public enum UserStatus
{
Unverified,
Active,
Removed,
Suspended,
Banned
}
现在我要检查
status in (Unverified, Active)
我知道这可行:
bool ok = status == UserStatus.Unverified || status == UserStatus.Active;
但是必须有一种更优雅的方式来编写此代码。
this question的主题非常相似,但这涉及的是标志枚举,这不是标志枚举。
最佳答案
这是一种扩展方法,在很多情况下都可以提供帮助。
public static class Ext
{
public static bool In<T>(this T val, params T[] values) where T : struct
{
return values.Contains(val);
}
}
用法:
Console.WriteLine(1.In(2, 1, 3));
Console.WriteLine(1.In(2, 3));
Console.WriteLine(UserStatus.Active.In(UserStatus.Removed, UserStatus.Banned));