【发布时间】:2013-11-18 20:45:26
【问题描述】:
我有枚举:
[Flags]
enum Editions
{
Educational,
Basic,
Pro,
Ultra
}
为什么会出现这种行为?
var x = Editions.Basic;
var y = Editions.Educational;
var test =x.HasFlag(y); // why is this true!?
// and!!!
var test2 = y.HasFlag(x); // this is false!
【问题讨论】:
-
Flags属性应该与枚举一起使用,其中每个值对应一个单独的位。你使用它的方式并没有真正的意义,所以不仅仅是HasFlag会产生令人困惑的结果。 -
MSDN FlagsAttribute 告诉你如何使用属性。