2

这是 Double 中 PositiveInfinity 的声明。

/// <summary>
/// Represents positive infinity. This field is constant.
/// </summary>
/// <filterpriority>1</filterpriority>
public const double PositiveInfinity = double.PositiveInfinity;

看起来像一个不会通过编译器的循环......为什么这样声明它以及它是如何工作的?

4

1 回答 1

14

这是PositiveInfinityin的声明Double

不它不是。

Double这是Resharper 提供的结构反编译的一部分。

这样更好。

这看起来像一个不会通过编译器的循环。

那是因为它一个不会通过编译器的循环。

为什么 Resharper 的反编译器会生成无法编译的代码?

我的猜测是这是一个错误。您必须向 Resharper 团队询问明确的答案。

可能他们有一个启发式方法,即Double.PositiveInfinity在出现正无穷大常数的任何地方放置;这也许是一个错误的地方。所以这是一个容易编写的错误。

真正的声明是什么样的?

我的家用电脑上没有参考资料,但我猜真正的声明是:

public const double PositiveInfinity = 1.0 / 0.0;

我在哪里可以获得参考源,所以我不必依赖不可靠的反编译器?

http://referencesource.microsoft.com

于 2013-06-01T15:00:03.327 回答