我一直在寻找并尝试使用dotPeek的Export To Project的功能来学习mscorlib库(4.0)的源代码,当我尝试构建它时,由于Double的MinValue和MaxValue为'Bad'而失败编译时间常数'。
[__DynamicallyInvokable]
public const double MinValue = -1.79769313486232E+308; // Bad compile time constant
[__DynamicallyInvokable]
public const double MaxValue = 1.79769313486232E+308; // Bad compile time constant
我到底错过了什么?导出编译器生成的代码会解决这个问题,还是有某种解决这个问题的幕后操作?
注意:使用Visual Studio 2013 Ultimate进行构建,我还有2012年和2010版本的Visual Studio(爱大学),不确定我使用的编译器是否会改变这个问题。
答案 0 :(得分:4)
问题是为您生成常量的应用程序生成了错误的数字。正确的数字是:
public const double MinValue = -1.7976931348623157E+308;
和
public const double MaxValue = 1.7976931348623157E+308;
生成的代码将最后4位数字从3157舍入到32(00),超过了double的值。