¿Cuándo es un System.Double no un doble?

Despues de ver comodouble.Nan == double.NaN Siempre es falso en C #, sentí curiosidad por cómo se implementó la igualdad bajo el capó. Así que usé Resharper para descompilar la estructura Doble, y esto es lo que encontré:

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

    public const double NaN = double.NaN;

    // more stuff removed...
}

Esto parece indicar la estructura.Double declara una constante que se define en términos de esta minúscula especialdouble, aunque siempre había pensado que los dos eran completamente sinónimos. Además, si voy a Implementación en el doble en minúsculas, Resharper simplemente me desplaza a la declaración que se encuentra en la parte superior del archivo. Del mismo modo, saltando a la implementación de las minúsculas.NaN ¡Simplemente me lleva a la declaración constante al principio de la línea!

Así que estoy tratando de entender esta definición aparentemente recursiva. ¿Es esto solo un artefacto del descompilador? Tal vez una limitación en Resharper? ¿O es este doble minúsculo en realidad una bestia completamente diferente, que representa algo en un nivel inferior del CLR / CTS?

Donde haceNaN realmente vienen de

Respuestas a la pregunta(2)

Su respuesta a la pregunta