借用这个问题的代码如何检查是否设置了多个枚举标志?我试图实现一个执行此测试的通用扩展。
我的第一次尝试如下。
public static bool ExactlyOneFlagSet(this Enum enumValue)
{
return !((enumValue & (enumValue - 1)) != 0);
}
这导致
运算符“-”不能应用于“System.Enum”和“int”类型的操作数
好的有道理,所以我想我会尝试这样的事情
public static bool ExactlyOneFlagSet<T>(this T enumValue) where T : struct, IConvertible
{
return !(((int)enumValue & ((int)enumValue - 1)) != 0);
}
这导致
无法将类型“T”转换为“int”
在阅读了这种行为之后,这也是有道理的,但是究竟如何实现这种扩展方法。有好心人帮忙吗???