C是B类下定义的枚举:
public enum C:uint
{
............
SHCNE_ALLEVENTS = 0x7FFFFFFF,
SHCNE_INTERRUPT =  0x80000000
}语句
case (int)C.SHCNE_ALLEVENTS:
无报错而语句
case  (int)C.SHCNE_INTERRUPT:
报错:
【无法将类型“A.B.C”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)】 请问:如何进行这种强制转换

解决方案 »

  1.   

    那你不转换了呗。没见有问题
    public static void Test()
    {
        C o = C.SHCNE_ALLEVENTS;
        switch (o)
        {
            case C.SHCNE_ALLEVENTS:
                Console.WriteLine("SHCNE_ALLEVENTS");
                break;
            case C.SHCNE_INTERRUPT:
                Console.WriteLine("SHCNE_INTERRUPT");
                break;
            default:
                break;
        }
    }public enum C : uint
    {
        SHCNE_ALLEVENTS = 0x7FFFFFFF,
        SHCNE_INTERRUPT = 0x80000000
    }
      

  2.   

    -2147483648    0x80000000
    2147483647     0x7FFFFFFF 
     unchecked((int)0x80000000);
      

  3.   

    UInt64 b =(UInt64)C.SHCNE_INTERRUPT;
      

  4.   


    如果用
    int o =?;
    就是我报告的错误情况
      

  5.   


    不行,因为我的switch (s)中的s是int
      

  6.   


    可行,但不能使用枚举SHCNE_INTERRUPT了
      

  7.   

    int o = unchecked((int)(uint)(C.SHCNE_INTERRUPT));
      

  8.   

    int o = unchecked((int)C.SHCNE_INTERRUPT);
      

  9.   


    这样可以了
    并且
    unchecked((int)(C.SHCNE_INTERRUPT))也是可以的