在c#中获取公共标志枚举值

SP1*_*SP1 1 c# enums enum-flags

说我有以下枚举

[Flags]
enum Letters
{
     A = 1,
     B = 2,
     C = 4,
     D = 8,
     E = 16,
     F = 32,
     AB = A | B,
     All = A | B | C,
}
Run Code Online (Sandbox Code Playgroud)

如果我有变量:

var s = Letters.A | Letters.B | Letters.D;
var p = Letters.A | Letters.C | Letters.D | Letters.E;
Run Code Online (Sandbox Code Playgroud)

我想要的是获得这两个枚举之间的共同值,所以在这种情况下它应该是A | D.有人可以告诉我如何实现这一目标.

谢谢

Mar*_* PM 7

您可以使用二进制&(和)运算符来获取它:

var s = Letters.A | Letters.B | Letters.D;
var p = Letters.A | Letters.C | Letters.D | Letters.E;
var sAndp = s & p; // This will give you only the common values ( A & D)
Run Code Online (Sandbox Code Playgroud)