我正在尝试将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。
-------------------结束更新
答案 0 :(得分:0)
阅读所有编辑和更新,使用常量decimal.MinValue
和使用实际值本身绝对没有区别。实际上,编译器在编译项目时会用实际值替换所有常量,因此生成的编译代码是相同的。