关于c#:Resharper警告转换枚举到UIntPtr,但没有编译器警告

Resharper warning casting enum to UIntPtr, but no compiler warning

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

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

对我来说,这看起来像是一个新的病毒。它是?或者编译器不担心它有什么不好的地方吗?(我使用的是Resharper 7.1.1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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使警告消失,因此我有一个解决方法:

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


This looks like a Resharper bug to me. Is it?

对:

RSRP-78748 False 'conversion does not exist' (UIntPtr)

1
2
3
4
5
6
7
8
9
10
11
using System;

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

It is a known spec devation.

截至2013年3月5日尚未修复。