swi*_*ter 7 c# windows-phone-7
问候,
我不敢相信我问这样一个基本问题,但它没有意义,所以这里是:).
在Windows Phone 7/.net上的C#中,我试图在类中定义一个常量,如下所示:
// error CS0266: Cannot implicitly convert type 'uint' to 'int'.
// An explicit conversion exists (are you missing a cast?)
public const int RED = 0xffff0000;
Run Code Online (Sandbox Code Playgroud)
如果我像这样放一个(int)演员,我得到另一个错误:
// error CS0221: Constant value '4294901760' cannot be converted to a 'int'
// (use 'unchecked' syntax to override)
public const int RED = (int)0xffff0000;
Run Code Online (Sandbox Code Playgroud)
但我知道我的int是32位,因此范围为-2,147,483,648到2,147,483,647,请参阅http://msdn.microsoft.com/en-us/library/5kzh1b5w(v=vs.80).aspx
什么给出了什么?
提前致谢!
猪
Aak*_*shM 18
如您Int32
所知,范围是-2,147,483,648到2,147,483,647,因此可以保留该范围内的任何数字,但只能保留该范围内的数字.4,294,901,760大于2,147,483,647,因此不适合Int32
.
该怎么做取决于你想要达到的目标.如果您只想要一个Int32
带位模式ffff0000
,那么建议使用unchecked
:
int y = unchecked((int)0xffff0000);
Run Code Online (Sandbox Code Playgroud)
y
现在具有值-65536,这是将位模式解释为有符号整数.
然而!如果你真的想要值4,294,901,760,你应该使用适合它的数据类型 - 所以UInt32
.