Quando é um System.Double não um duplo?

Depois de ver comodouble.Nan == double.NaN é sempre falso em c #, fiquei curioso como a igualdade foi implementada sob o capô. Então eu usei o Resharper para descompilar a estrutura Double, e aqui está o que eu encontrei:

public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>
{
    // stuff removed...

    public const double NaN = double.NaN;

    // more stuff removed...
}

Isso parece indicar a estruturaDouble declara uma constante que é definida em termos deste caso minúsculo especialdouble, embora eu sempre achasse que os dois eram completamente sinônimos. Além do mais, se eu vou para implementação no double em minúsculas, Resharper simplesmente me rola para a declaração na parte superior do arquivo. Da mesma forma, pular para a implementação de minúsculasNaN só me leva para a declaração constante no início da linha!

Então, estou tentando entender essa definição aparentemente recursiva. Isso é apenas um artefato do descompilador? Talvez uma limitação em Resharper? Ou é este duplo minúsculo realmente um animal diferente - representando algo em um nível inferior do CLR / CTS?

OndeNaN realmente vem?

questionAnswers(2)

yourAnswerToTheQuestion