Resharper警告将枚举枚举到UIntPtr,但没有编译器警告

时间:2013-03-05 11:14:13

标签: c# resharper resharper-7.1

在下面的代码中,Resharper给了我一个警告:Cannot cast expression of type 'Color' to type 'UIntPtr'。 (实际上,Resharper认为这是一个实际错误。)

但是,没有编译器警告,它可以正常工作。

对我来说这看起来像一个Resharper bug。是吗?或者编译器不担心它有什么不好吗? (我正在使用Resharper 7.1.1)

using System;

namespace Demo
{
    internal class Program
    {
        public enum Color { Red, Green, Blue }

        private static void Main(string[] args)
        {
            UIntPtr test = (UIntPtr) Color.Red; // Resharper warning, no compile warning.
        }
    }
}

我可以先通过将值转换为int来消除警告,所以我有一个解决方法:

UIntPtr test = (UIntPtr)(int) Color.Red;

1 个答案:

答案 0 :(得分:3)

  

对我来说这看起来像一个Resharper bug。是吗?

Yes

  

RSRP-78748错误'转换不存在'(UIntPtr)

using System;

class A
{
    static void Main()
    {
        E? x = 0;
        UIntPtr z = (UIntPtr)x;
    }
}
enum E { }
     

这是一个已知的规范。

自2013-03-05起未修复。