5

以下のコードでは、Resharper から警告が表示されます: Cannot cast expression of type 'Color' to type 'UIntPtr'. (実際、Resharper はそれが実際のエラーであると考えています。)

ただし、コンパイラの警告はなく、正常に動作します。

これは Resharper のバグのように見えます。それは...ですか?それとも、コンパイラが心配していない何か悪いことがありますか? (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;
4

1 に答える 1

3

これは私にはResharperのバグのように見えます。それは...ですか?

はい

RSRP-78748 False'変換が存在しません'(UIntPtr)

using System;

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

これは既知の仕様の逸脱です。

2013-03-05現在は修正されていません。

于 2013-03-05T14:22:57.273 に答える