如果语句在组合枚举值上没有按预期工作

Guy*_*ark 5 .net c# debugging if-statement

这是一个古怪的.

我有以下代码......

foreach (IScanTicket ticket in this) {
    if (ticket.Status == TicketStatus.Created || ticket.Status == (TicketStatus.Transfered | TicketStatus.Created))
        return ticket;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个状态时Created|Transferred,if语句似乎失败了(没有按照它的意思去做).

有趣的是,如果我调试并逐步执行代码并观察语句,它总是TRUE在我的调试器中返回,但是当我单步执行代码时它无法进入块.

为什么调试器会显示该语句true,但仍然继续这样做?这就像调试器告诉我的一样.

有没有人经历过这个?

PS我正在使用Xamarin studio 5.9.7

Guy*_*ark 0

感谢@MarcinJuraszek 和@YeldarKurmangaliyev。

似乎该[Flags]属性没有像我最初想象的那样在枚举上设置。现在添加此属性可以使枚举在任一组合中工作。

因此,似乎没有此属性会影响连接枚举值的顺序。