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.