我有一个function remove() {
var p2 = document.getElementById("p2");
p2.parentNode.removeChild(p2);
}
枚举,并想断言它的给定实例是原始值之一,即它的二进制表示形式恰好具有一个“ 1”,即,它是2的幂。
什么是最好的检查方法?
(我想“最佳”不一定定义明确,所以...)
答案 0 :(得分:0)
使用Framework功能,并且在设置标志的数量方面更加灵活,可以使用以下方式:
[Flags]
public enum FlagsEnum {
None = 0,
One = 1,
Two = 2,
Three = 4,
}
void Main()
{
var flags = FlagsEnum.Two;
var hasOneElement = Enum.GetValues(typeof(FlagsEnum)).OfType<FlagsEnum>().Where(i => i != FlagsEnum.None && flags.HasFlag(i)).Count() == 1;
}
答案 1 :(得分:0)
位操作将产生最快的结果
((anInstanceOfTheFlaggedEnum & (anInstanceOfTheFlaggedEnum -1)) != 0)
通过更具可读性的内置函数
Enum.IsDefined(typeof(yourFlaggedEnumType), anInstanceOfTheFlaggedEnum)
我刚刚进行了测试,速度快了175倍。