c#'无效的十进制常数'无法在Monodroid中转换为'double'(Xamarin)

时间:2014-03-11 15:16:53

标签: c# xamarin.android decimal xamarin

我正在尝试将decimal.MinValue转换为其双重表示而没有任何成功,编译器返回“无效的十进制常量”错误,编译失败。

-------------更新:
无法编译的行是:

  

if(value<(double)decimal.MinValue || value>(double)decimal.MaxValue)


-------------结束更新

在查找MinValue常量的定义后(更新:使用visual studio上的'Go to definition'选项),似乎常量没有正确的值,常量声明如下:

  

[DecimalConstant(0,255,4294967295,4294967295,4294967295)]
  public const decimal MinValue = m;

所以我很好奇在.net框架上看到这个相同约束的声明(更新:使用visual studio上的'Go to definition'选项)我发现完全不同:

  

[DecimalConstant(0,128,4294967295,4294967295,4294967295)]
  public const decimal MinValue = -79228162514264337593543950335m;

因此我的问题的解决方案可能是替换.net框架中该常量的值所施加的(double)decimal.MinValue,但我需要确保此修复对我的应用程序没有影响?我是移动CPU寄存器将不能保持这个大小的值!

-------------------更新:
我的开发环境是:Windows 8.1,Visual Studio 2013 Update 1和mono-droid v4.10.01073。
-------------------结束更新

1 个答案:

答案 0 :(得分:0)

阅读所有编辑和更新,使用常量decimal.MinValue和使用实际值本身绝对没有区别。实际上,编译器在编译项目时会用实际值替换所有常量,因此生成的编译代码是相同的。