2013-03-05 30 views
5

Trong mã bên dưới, Resharper cho tôi cảnh báo: Cannot cast expression of type 'Color' to type 'UIntPtr'. (Thực ra, Resharper nghĩ đó là lỗi thực sự.)Chia sẻ lại cảnh báo đúc enum thành UIntPtr, nhưng không có cảnh báo trình biên dịch

Tuy nhiên, không có cảnh báo trình biên dịch và nó hoạt động tốt.

Điều này giống như lỗi Resharper đối với tôi. Là nó? Hoặc là có điều gì đó xấu về nó mà trình biên dịch không đáng lo ngại? (Tôi đang sử dụng 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. 
     } 
    } 
} 

tôi có thể làm cho các cảnh báo đi bằng cách đúc các giá trị cho một int đầu tiên, vì vậy tôi có một cách giải quyết:

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

Đoán tốt nhất là các vấn đề về chia sẻ lại là nó có thể thất bại khi chạy hoặc hoạt động bất ngờ giữa các nền tảng –

+0

Nó cũng có thể gây ra sự cố trên hệ thống 64 bit. – alzaimar

+0

@alzaimar Làm thế nào? Tôi không thể thấy tại sao ... –

Trả lời

3

vẻ này như một lỗi Resharper cho tôi. Là nó?

Yes:

RSRP-78.748 False 'chuyển đổi không tồn tại' (UIntPtr)

using System; 

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

Đó là một spec biết devation.

Không cố định từ 2013-03-05.

+0

Rất cảm ơn - Tôi đã thử tìm kiếm trên diễn đàn Resharper, nhưng tôi thất bại... –

Các vấn đề liên quan