在下面的两种方法中,您更喜欢阅读哪种方法?
还有另一种(更好的?)方法来检查是否设置了标志?
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); }