以下两种方法中,您更喜欢阅读哪种方法? 还有另一种(更好的?)方法来检查是否设置了标志?
bool CheckFlag(FooFlag fooFlag)
{
return fooFlag == (this.Foo & fooFlag);
}
和
bool CheckFlag(FooFlag fooFlag)
{
return (this.Foo & fooFlag) != 0;
}
<小时/> 请按照您喜欢的方式进行投票。
答案 0 :(得分:9)
这两个表达式做了不同的事情(如果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
答案 1 :(得分:6)
bool CheckFlag(FooFlag fooFlag)
{
return fooFlag == (this.Foo & fooFlag);
}
答案 2 :(得分:3)
我更喜欢第一个,因为它更具可读性。
答案 3 :(得分:2)
bool CheckFlag(FooFlag fooFlag)
{
return (this.Foo & fooFlag) != 0;
}
答案 4 :(得分:1)
我更喜欢第一个。我在布尔表达式中谨慎使用!= 0。
答案 5 :(得分:-2)
我是一个积极的思想家:
bool CheckFlag(FooFlag fooFlag)
{
return this.Foo & fooFlag == 1;
}