从整数值设置枚举标志
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
}
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
}