Resharper предупреждение, приводящее enum к UIntPtr, но без предупреждения компилятора

В приведенном ниже коде Resharper дает мне предупреждение: Cannot cast expression of type 'Color' to type 'UIntPtr', (На самом деле, Решарпер думает, что это настоящая ошибка.)

Тем не менее, нет никакого предупреждения компилятора, и он работает нормально.

Это похоже на ошибку Решарпера для меня. Это? Или в этом есть что-то плохое, что не беспокоит компилятор? (Я использую 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 ответ

Решение

Это похоже на ошибку Решарпера для меня. Это?

Да:

RSRP-78748 Ложное "преобразование не существует" (UIntPtr)

using System;

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

Это известное отклонение спецификации.

Не исправлено по состоянию на 2013-03-05.

Другие вопросы по тегам