यह देखने के बाद कि double.Nan == double.NaN
सी # में हमेशा झूठा रहता है, मैं उत्सुक हो गया कि हुड के तहत समानता कैसे लागू की गई थी। तो मैं डबल struct डिकंपाइल करने के लिए Resharper इस्तेमाल किया, और यहाँ मैं क्या पाया है:एक सिस्टम कब होता है। डबल नहीं है?
public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>
{
// stuff removed...
public const double NaN = double.NaN;
// more stuff removed...
}
यह हालांकि मैं, struct Double
एक निरंतर है कि इस विशेष लोअर केस double
के संदर्भ में परिभाषित किया गया है वाणी में इंगित करता है डी हमेशा सोचा था कि दोनों पूरी तरह से समानार्थी थे। और क्या है, अगर मैं लोअरकेस डबल पर कार्यान्वयन के लिए जाता हूं, तो रिशेर्पर बस फ़ाइल के शीर्ष पर घोषणा के लिए मुझे स्क्रॉल करता है। इसी प्रकार, लोअरकेस के NaN
के कार्यान्वयन के लिए कूदने से पहले मुझे लाइन में पहले निरंतर घोषणा में ले जाता है!
तो मैं इस प्रतीत होता है कि यह प्रतीत होता है कि यह पुनरावर्ती परिभाषा है। क्या यह सिर्फ डिकंपेलर का एक आर्टेफैक्ट है? शायद Resharper में एक सीमा? या क्या यह लोअरकेस डबल वास्तव में एक अलग जानवर है - सीएलआर/सीटीएस से निचले स्तर पर कुछ का प्रतिनिधित्व करता है?
NaN
कहां से आता है?
क्या इससे संबंधित है? http://stackoverflow.com/questions/4751885/how-are-the-primitive-types-defined-non-recursively और http://stackoverflow.com/questions/16113850/if-int32-is-just-an -alias-for-int-how-can-the-int32-class-use-an-int –
मेटाडेटा को देखने के लिए बस VS का उपयोग करना 'सार्वजनिक कॉन्स डबल NaN = 0.0/0.0; ' –
' NaN' का अर्थ है 'नहीं संख्या' और 'इन्फिनिटी' की तरह सकारात्मक या नकारात्मक हो सकती है। अगर कोई सोच रहा है। – Nolonar