枚举值中包含的位掩码标志的最佳方法是什么?

杰德·马伦(JD Mallen)

我正在使用旧的(> 15年)系统,该系统使用char []数组存储属性,在该系统中,如果索引具有“ X”,则该属性被激活。我已经做了很多转换工作:

...

[Flags]
public enum PDMObjectFlags {
    None    = 0,     // 000000
    OptionA = 1,     // 000001
    OptionB = 2,     // 000010
    OptionC = 4,     // 000100
    OptionD = 8,     // 001000
    OptionE = 16,    // 010000
    OptionF = 32     // 100000
}

...

string userOptionsStr = "   XXX";           // "   XXX"
string userOptionsBin = userOptions
                       .Replace('X', '1')
                       .Replace(' ', '0');  // "000111"
int userOptionsInt = 
    Convert.ToInt32(userOptionsBin, 2);     // 7

我如何最终得到可以显示特定用户所有属性的东西?像这样的东西:

foreach (var x in userOptionsList){
    Console.Write("John's account has " + x);
}

// Output:
// 
// John's account has OptionA
// John's account has OptionB
// John's account has OptionC

对不起,如果示例很愚蠢,我只是在这里输入。最终它将与模型一起传递到Razor视图中并在页面上进行迭代。

谢谢!

里德·科普西(Reed Copsey)

将其作为整数后,可以转换回枚举并用于ToString()提取名称列表。

给定的枚举定义为(编译):

[Flags]
public enum PDMObjectFlags {
    None     = 0,    // 000000
    A = 1,    // 000001
    B = 2,    // 000010
    C = 4,    // 000100
    D = 8,    // 001000
    E = 16,   // 010000
    F = 32    // 100000
}

您可以使用以下方法扩展代码:

PDMObjectFlags flags = (PDMObjectFlags)userOptionsInt;  
var names = flags.ToString().Split(new[] {',',' '}, StringSplitOptions.RemoveEmptyEntries);

foreach(var name in names)
    Console.WriteLine("John\'s account has Option {0}", name);

这将打印您指定的输出,即:

约翰的帐户有选项A

约翰的帐户有选项B

约翰的帐户有选项C

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

位掩码枚举的通用单标志枚举

来自分类Dev

定义枚举标志的值的惯例是什么?

来自分类Dev

为一系列位创建位掩码的最佳实践方法是什么?

来自分类Dev

Cython中的枚举是检查对象的最佳方法是什么?

来自分类Dev

变异嵌套枚举的最佳方法是什么?

来自分类Dev

选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

来自分类Dev

选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

来自分类Dev

在 tsconfig 中显式包含类型的最佳方法是什么?

来自分类Dev

枚举结果<值> {...}`中的“ <值>”是什么?

来自分类Dev

在if条件中舍弃null值的最佳方法是什么-JavaScript

来自分类Dev

在MySQL DB中存储单个值的最佳方法是什么?

来自分类Dev

在PostgreSQL中存储基于NodaTime的值的最佳方法是什么?

来自分类Dev

在documentdb中存储日期时间值的最佳方法是什么?

来自分类Dev

在承诺链中返回多个值的最佳方法是什么

来自分类Dev

这些SysRq命令的位掩码是什么?

来自分类Dev

使用bash,awk或sed对文件中的每个数字进行位移位和位掩码的最快方法是什么?

来自分类Dev

使用bash,awk或sed对文件中的每个数字进行位移位和位掩码的最快方法是什么?

来自分类Dev

使用Firebase保存Java枚举的最佳方法是什么

来自分类Dev

非顺序整数C ++枚举的最佳方法是什么

来自分类Dev

严格解析字符串枚举的最佳方法是什么?

来自分类Dev

比较两个不同枚举的最佳方法是什么?

来自分类Dev

捕获MTU值的最佳方法是什么

来自分类Dev

为什么将标志与位掩码和标志的按位 AND 的结果进行比较?

来自分类Dev

在C中应用可移植的位掩码和标志

来自分类Dev

确定字符串是否包含Swift中的字符集的最佳方法是什么

来自分类Dev

在支持JS的浏览器中包含CSS的最佳方法是什么?

来自分类Dev

从“ .git / info / exclude”文件中包含的合并中排除文件的最佳方法是什么?

来自分类Dev

当字段中可能包含逗号和引号时,从CSV转换为JSON的最佳方法是什么?

来自分类Dev

在弹性搜索中索引包含数学表达式的文档的最佳方法是什么?

Related 相关文章

  1. 1

    位掩码枚举的通用单标志枚举

  2. 2

    定义枚举标志的值的惯例是什么?

  3. 3

    为一系列位创建位掩码的最佳实践方法是什么?

  4. 4

    Cython中的枚举是检查对象的最佳方法是什么?

  5. 5

    变异嵌套枚举的最佳方法是什么?

  6. 6

    选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

  7. 7

    选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

  8. 8

    在 tsconfig 中显式包含类型的最佳方法是什么?

  9. 9

    枚举结果<值> {...}`中的“ <值>”是什么?

  10. 10

    在if条件中舍弃null值的最佳方法是什么-JavaScript

  11. 11

    在MySQL DB中存储单个值的最佳方法是什么?

  12. 12

    在PostgreSQL中存储基于NodaTime的值的最佳方法是什么?

  13. 13

    在documentdb中存储日期时间值的最佳方法是什么?

  14. 14

    在承诺链中返回多个值的最佳方法是什么

  15. 15

    这些SysRq命令的位掩码是什么?

  16. 16

    使用bash,awk或sed对文件中的每个数字进行位移位和位掩码的最快方法是什么?

  17. 17

    使用bash,awk或sed对文件中的每个数字进行位移位和位掩码的最快方法是什么?

  18. 18

    使用Firebase保存Java枚举的最佳方法是什么

  19. 19

    非顺序整数C ++枚举的最佳方法是什么

  20. 20

    严格解析字符串枚举的最佳方法是什么?

  21. 21

    比较两个不同枚举的最佳方法是什么?

  22. 22

    捕获MTU值的最佳方法是什么

  23. 23

    为什么将标志与位掩码和标志的按位 AND 的结果进行比较?

  24. 24

    在C中应用可移植的位掩码和标志

  25. 25

    确定字符串是否包含Swift中的字符集的最佳方法是什么

  26. 26

    在支持JS的浏览器中包含CSS的最佳方法是什么?

  27. 27

    从“ .git / info / exclude”文件中包含的合并中排除文件的最佳方法是什么?

  28. 28

    当字段中可能包含逗号和引号时,从CSV转换为JSON的最佳方法是什么?

  29. 29

    在弹性搜索中索引包含数学表达式的文档的最佳方法是什么?

热门标签

归档