如何将const声明设置为自身

本文关键字:设置 声明 const | 更新日期: 2023-09-27 18:16:43

这是PositiveInfinity在Double中的声明。

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

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

如何将const声明设置为自身

这是DoublePositiveInfinity的声明。

不,它不是。

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

更好的

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

这是因为是一个无法通过编译器的循环。

为什么Resharper的反编译器会产生不能编译的代码?

我猜这是个bug。你必须问Resharper团队一个明确的答案。

可能他们有一个启发式说把Double.PositiveInfinity放在任何正无穷常数出现的地方;这也许是唯一一个错误的地方。这是一个很容易写的bug。

真正的声明是什么样子的?

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

public const double PositiveInfinity = 1.0 / 0.0;

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

http://referencesource.microsoft.com