从整数值设置枚举标志

Setting enum flags from integer value

CompBitsList companyBit;
public CompBitsList CompanyBit { get => companyBit; set => companyBit= value; }

[Flags]
public enum CompBitsList
{
   None = 0
   BitOption1 = 1,
   BitOption2 = 2,
   BitOption3 = 4,
   BitOption4 = 8,
   BitOption5 = 16,
   BitOption6 = 32,
}

假设我有整数值 22,它将包含枚举标志 BitOption2、BitOption3 和 BitOption5 (2+4+16)。有没有办法自动执行此操作,以便我可以传递整数值并自动设置枚举变量 CompanyBit?

companyBit = CompBitsList.BitOption2 | CompBitsList.BitOption3 | CompBitsList.BitOption5

我对枚举不是很熟悉,但我不想使用上面的方法,因此欢迎任何建议。谢谢:)

您可以将 int 转换为 CompBitsList 的实例。

CompBitsList companyBit = (CompBitsList)22;
companyBit.HasFlag(CompBitsList.BitOption2); // True
companyBit.HasFlag(CompBitsList.BitOption3); // True
companyBit.HasFlag(CompBitsList.BitOption5); // True
companyBit.HasFlag(CompBitsList.BitOption6); // False

您还可以在该枚举上定义一个代表标志组合的值,如果它有意义并且您将经常组合这些标志。

[Flags]
public enum CompBitsList
{
   None = 0
   BitOption1 = 1,
   BitOption2 = 2,
   BitOption3 = 4,
   BitOption4 = 8,
   BitOption5 = 16,
   BitOption6 = 32,
   BitOptions2And3And5 = BitOption2 | BitOption3 | BitOption5 //or just 22
}