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

PositiveInfinityこれはinの宣言ですDouble

いいえそうではありません。

これは、DoubleResharper が提供する構造体の逆コンパイルの一部です。

その方がいいです。

これは、コンパイラを通過しないサイクルのように見えます。

それ、コンパイラを通過しないサイクルだからです。

Resharper の逆コンパイラがコンパイルしないコードを生成するのはなぜですか?

私の推測では、それはバグです。Resharper チームに決定的な回答を求める必要があります。

Double.PositiveInfinityおそらく、正の無限大定数が現れる場所ならどこにでも入れるというヒューリスティックがあります。これはおそらく、それが間違っている唯一の場所です。だから、それは書きやすいバグです。

本当の宣言はどのように見えますか?

私の自宅のコンピューターには参照ソースがありませんが、本当の宣言は次のようになると思います。

public const double PositiveInfinity = 1.0 / 0.0;

信頼性の低い逆コンパイラに頼る必要がないように、参照ソースはどこで入手できますか?

http://referencesource.microsoft.com

于 2013-06-01T15:00:03.327 に答える