c# - Why is == overridden in System.Double but not in System.Int32 and what are the ramifications of that? -
सी # में मैं एमएसडीएन लाइब्रेरी को देखता हूँ। मैं इस लिंक को डबल के बारे में देखता हूं जो ज्यादा नहीं कहता (हालांकि मैं लेकिन छवि के लिए और मैं" ऑपरेटर "के तहत समानता पर क्लिक कर सकते हैं और जबकि जब मैं उस छवि में देखें, ( क्यों और क्या इस का असर क्या है? डबल। एनएएन की वजह से एक संभावित कारण है। इसके लिए: एमएसडीएन का कहना है: यदि समानता ऑपरेटर (==) का उपयोग करके दो डबल। एनएएन मूल्यों को समानता के लिए परीक्षण किया जाता है, तो परिणाम गलत है; दो डबल। एनएएन मूल्यों को बराबर नहीं माना जाता है। यदि उन्हें समानता के आधार पर समानता के लिए परीक्षण किया जाता है, तो परिणाम सही है। जब आप यह निर्धारित करना चाहते हैं कि एक डबल का मान संख्या नहीं है (एनएएन), वैकल्पिक ISNaN विधि को कॉल करना है। इसलिए == ऑपरेटर और डबल के समान तरीकों में भिन्न व्यवहार का संबंध है डबल करने के लिए। एनएएन, मुझे लगता है यह क्यों == डबल के लिए ओवरराइड है इंट के लिए, ऐसा कोई विशेष मामला नहीं है। मतभेदों को दिखाने के लिए कोड: कोड से भी है डबल ओवरराइड क्यों
== लेकिन
डबल ऑब्जेक्ट के लिए डबल आकृति है) .. यह उदाहरण के लिए विधियों को नहीं दिखाता है।
सिस्टम पर यह लिंक। डबल
डबल एमएसडीएन में, फिर तरीकों के बाद फ़ील्ड सूचीबद्ध करने से पहले), यह ऑपरेटरों को दिखाता है, और यह दर्शाता है कि समानता ऑपरेटर ओवरराइड किया गया है
सार्वजनिक स्थिर बूल ऑपरेटर == (डबल बायां, डबल दाएं)
System.Int32 छवि के लिए
Int को देखता हूँ 32 में एमएसडीएन नीचे है
System.Int32 का पृष्ठ) ऐसा लगता है कि
== ओवरराइड नहीं किया गया है।
सिस्टम का उपयोग कर; पब्लिक क्लास उदाहरण {सार्वजनिक स्थिर शून्य मुख्य () {कंसोल। WrightLine ("नाएन == NaN: {0}", डबल। एनएएन == डबल। एनएएन); कंसोल.प्रकाश रेखा ("नाएन! = एनएएन: {0}", डबल। एनए! = डबल। एनएएन); कंसोल.प्रकाशलाइन ("ना एन। एक्लल्स (एनएएन): {0}", डबल। एनएएन। एक्लॉल्स् (डबल। एनएएन)); कंसोल.वाइटलाइन ("! नाएन। एक्लल्स (एनएएन): {0}",! डबल। एनएएन। एक्लॉल्स् (डबल। एनएएन)); कंसोल.प्रकाश रेखा ("आईसैन: {0}", डबल। आईएसएनएएन (डबल। एनएएन)); कंसोल.प्रकाशलाइन ("\ nNaN & gt; नैन: {0}", डबल। एनएएन & gt; डबल। एनएएन); कंसोल.प्रकाशलाइन ("नाएनए; = एनएएन: {0}", डबल। एनएएन & gt; = डबल। एनएएन); कंसोल.प्रकाशलाइन ("नाएन और लेफ्टिनेंट; एनएएन: {0}", डबल। एनएएन & लेफ्टिनेंट; डबल। एनएएन); कंसोल.प्रकाशलाइन ("नाएन & lt; 100.0: {0}", डबल। एनएएन & lt; 100.0); कंसोल.प्रकाशलाइन ("नाएन और एलटी; = 100.0: {0}", डबल। एनएएन & lt; = 100.0); कंसोल.प्रकाशलाइन ("नाएन & gt; = 100.0: {0}", डबल। एनएएन & gt; 100.0); कंसोल.प्रकाशलाइन ("नाएन। कॉम्पेरटेओ (एनएएन): {0}", डबल। एनएएन। कॉम्पेरेटो (डबल। एनएएन)); कंसोल.प्रकाशलाइन ("नाएन कॉम्परेटो (100.0): {0}", डबल। एनएएन। कॉम्पेरटेओ (100.0)); कंसोल.प्रकाशलाइन ("(100.0) .कंपर्स टू (डबल। एनएएन): {0}", (100.0) .कंपर्स (डबल। एनएएन)); }} // उदाहरण निम्न आउटपुट प्रदर्शित करता है: // NaN == NaN: गलत // NaN! = NaN: True // NaN.Equals (NaN): True //! NaN.Equals (NaN): गलत // ISNaN: True // // NaN & gt; नाएन: झूठी // नाएन & gt; = नाएन: गलत // एनएएन & lt; नाएन: गलत // एनएएन & lt; 100.0: गलत // नाएन & lt; = 100.0: गलत // NaN> = 100.0: गलत // NaN.CompareTo (NaN): 0 // NaN.CompareTo (100.0): -1 // (100.0) .कंपर्स डबल। एनएएन): 1
Comments
Post a Comment