我应该如何检查标志枚举中是否设置了标志
本文关键字:标志 枚举 设置 是否 何检查 检查 我应该 | 更新日期: 2023-09-27 17:47:46
在下面的两个方法中,您更喜欢阅读哪一个
是否有其他(更好的?)方法来检查是否设置了标志?
bool CheckFlag(FooFlag fooFlag)
{
return fooFlag == (this.Foo & fooFlag);
}
和
bool CheckFlag(FooFlag fooFlag)
{
return (this.Foo & fooFlag) != 0;
}
请投票选出你喜欢的方法。
这两个表达式做的事情不同(如果fooFlag有多个位集),所以哪一个更好实际上取决于您想要的行为:
fooFlag == (this.Foo & fooFlag) // result is true iff all bits in fooFlag are set
(this.Foo & fooFlag) != 0 // result is true if any bits in fooFlag are set
bool CheckFlag(FooFlag fooFlag)
{
return fooFlag == (this.Foo & fooFlag);
}
我更喜欢第一个,因为它更可读。
bool CheckFlag(FooFlag fooFlag)
{
return (this.Foo & fooFlag) != 0;
}
我更喜欢第一个。我用=在布尔表达式中谨慎地使用0。
我是一个积极的思想家:
bool CheckFlag(FooFlag fooFlag)
{
return this.Foo & fooFlag == 1;
}