整数在C#中枚举铸造

这个问题在这里已经有了答案:

  • 在C#中,[Flags]枚举属性意味着什么? 10个答案

  • 假设你的enum是这样的:

    enum E {
        A = 1
        B = 2
        C = 4
        D = 8
    }
    

    如果您将每个值转换为二进制值,您会得到:

    A = 0001
    B = 0010
    C = 0100
    D = 1000
    

    现在让我们假设你尝试转换121100二进制,这个enum

    E enumTest = (E)12;
    

    它会输出C|D

    | 作为OR运算符, C|D意味着0100 OR 1000 ,它给了我们1100或十进制的12

    就你而言,它只是试图找出哪个enum组合等于67239937 。 这被转换为二进制为100000000100000000000000001 。 然后转换为Test2|Test16|Test201|(1 << 17)|(1 << 26)

    链接地址: http://www.djcxy.com/p/54435.html

    上一篇: Integer to enum casting in C#

    下一篇: c# check enum is contained in options