我需要实现某种位状态映射,我不知道如何实现这个东西 - 也许我有一个块头;)
好的,所以我的状态代码可以是最大值。 32位长,例如1001 0011
每个位都属于一个特殊的状态代码 - 字符串。
例如:
Bit 1: String Cancel
Bit 2: String Okay
Bit 3: String Save
....
Bit 32: String Next
现在我必须确定设置了哪些位并返回所有状态代码 - 设置为32位长状态的字符串。
我喜欢某种词典或者总结,我可以为每个位存储相应的状态代码。
然后我想循环通过32位长的状态代码并从字典中获取相应的状态代码字符串 - 将其存储在字符串中,并在32位长状态代码循环后返回它。
有人对此有所了解吗?
答案 0 :(得分:3)
您可以使用带有flags属性的枚举。枚举可以从int转换为int。 可以设置每个枚举值,以使您的状态看起来像这样
[Flags]
enum Status { None = 0 , Cancel = 1 , Ok = 2 , Save = 4 ... }
标志属性
表示可以将枚举视为位字段;那是, 一组旗帜。
你可以用
进行测试 if ((status & Status.Ok) == Status.Ok)
{
// Do something
}