जारोस्लाव जांडेक कहते हैं (खेद मैं टिप्पणी नहीं कर सकते हैं, पर्याप्त नहीं प्रतिष्ठा)
क्योंकि यह उन दो उदाहरणों तुलना, नहीं उनके मूल्य (दो संदर्भ)।
और वास्तव में यह अन्य मामलों की टन के लिए एक ही है! पूर्व
IPAddress ip1 = IPAddress.Parse("192.168.0.1");
IPAddress ip2 = IPAddress.Parse("192.168.0.1");
दोनों आईपी पतों के लिए एक ही पते का प्रतिनिधित्व करते हैं, लेकिन आप दो अलग-अलग उदाहरणों IPAddress वर्ग के है। तो निश्चित रूप से "ip1 == ip2" और "ip1.Equals (ip2)" दोनों झूठे हैं, क्योंकि वे एक ही ऑब्जेक्ट को इंगित नहीं करते हैं।
अब यदि आप "ip1.Address == ip2.Address" जांचते हैं तो परिणाम आईपीएड्रेस के रूप में सच होगा। एड्रेस एक "लंबा" है, इसलिए आप 2 मान प्रकारों की तुलना कर रहे हैं। ध्यान दें कि "ip1.ToString() == ip2.ToString()" भी सही होगा भले ही एक स्ट्रिंग संदर्भ प्रकार न हो, एक मान प्रकार नहीं है (लेकिन तार वास्तव में विशेष हैं)।
तो वास्तव में आपके मामले में आप पूर्णनाम संपत्ति की तुलना करना चाहते हैं (यह एक स्ट्रिंग है इसलिए कोई समस्या नहीं है)।
आप केवल गुण है, यानी .FullName संपत्ति है कि आप उदाहरण के बजाय मूल्य की तुलना कर रहे का उपयोग करके कहते हैं कि
यह है?
वास्तव में यह संपत्ति के मूल्य या संदर्भ प्रकार के साथ क्या करना है इसके साथ अधिक कुछ करना है। संदर्भ प्रकारों की तुलना करते समय, अधिकांश मामलों में तुलना यह होगी कि वे एक ही वस्तु को इंगित करते हैं या नहीं, लेकिन विधियों को ओवरराइड करना या ऑपरेटरों को बनाना संभव है ताकि तुलना सामग्री ऑब्जेक्ट्स की तुलना में की जा सके (फिर से जारोस्लाव जांडेक ने पहले से ही बताया)।
एचटीएच
DirectoryInfo ऑब्जेक्ट की तुलना करने का क्या कारण है? शायद आपको तुलना करना चाहिए। फुलपाथ? – griZZZly8
वे एक ही पथ नहीं हैं। क्या यह किसी प्रकार का स्ट्रूप परीक्षण है? –
इसके अलावा, आपके करीबी ब्रेसिज़ पर टिप्पणी की जाती है। यदि आप चाहते हैं कि हम आपकी मदद करने के लिए ऊर्जा डालें, तो क्या आप एक अच्छा सवाल पूछने के लिए ऊर्जा नहीं लगाएंगे? –