2013-03-05 124 views
5

在下面的代碼中,Resharper給我一個警告:Cannot cast expression of type 'Color' to type 'UIntPtr'。 (實際上,Resharper認爲這是一個實際的錯誤。)Resharper警告將枚舉枚舉爲UIntPtr,但沒有編譯器警告

但是,沒有編譯器警告,它工作正常。

這看起來像一個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. 
     } 
    } 
} 

我能警告的值轉換成一整型先走開,讓我有一種變通方法:

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

最好的猜測是resharpers的問題是它可能會在運行時失敗或者在平臺之間出現意外的行爲 – 2013-03-05 11:17:57

+0

它也可能在64位系統上導致問題。 – alzaimar 2013-03-05 14:22:10

+0

@alzaimar如何?我不明白爲什麼...... – 2013-03-05 14:24:37

回答

3

這看起來像一個Resharper bug給我。是嗎?

Yes

RSRP-78748假的轉換不存在'(UIntPtr)

using System; 

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

這是一個衆所周知的規格devation。

截至2013年3月5日不固定。

+0

非常感謝 - 我試圖在Resharper論壇上搜索它,但我失敗... – 2013-03-05 14:33:46

相關問題