Search code examples
c#enumsenum-flags

Getting common flags enum value in c#


Say I have the below enum

[Flags]
enum Letters
{
     A = 1,
     B = 2,
     C = 4,
     D = 8,
     E = 16,
     F = 32,
     AB = A | B,
     All = A | B | C,
}

If I have the variables:

var s = Letters.A | Letters.B | Letters.D;
var p = Letters.A | Letters.C | Letters.D | Letters.E;

What I want is to get the common values between these two enums so in this case it should be A | D. Can some one please tell me how I can achieve this.

Thanks


Solution

  • You can get that using the binary & (and) operator:

    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)