.NET में स्थानीय तारों की तुलना करने के लिए "==" का उपयोग न करने के कारण क्या हैं? यदि मैं इसका उपयोग करता हूं तो संस्कृतिइंफो के संबंध में तुलना निष्पादित कैसे की जाएगी?क्या मुझे .NET स्थानीयकृत स्ट्रिंग तुलना के लिए '==' का उपयोग करना चाहिए?
उत्तर
==
संस्कृति-असंवेदनशील है - यह एक साधारण साधारण तुलना है। तो दो तार जो सांस्कृतिक रूप से बराबर हैं - या अन्य कैनोलिकलाइजेशन फॉर्मों के मामले में भी बराबर - ==
के माध्यम से बराबर हो सकते हैं। यह मूल रूप से char
सरणी जैसे प्रत्येक स्ट्रिंग का इलाज करता है।
अधिभारित String.operator ==
एक संस्कृति-अनजान सामान्य तुलना करेगा – यह heavily optimized unrolled loop का उपयोग करके बाइट-बाय-बाइट तारों की तुलना करता है।
यह आप == साथ संस्कृति अवगत तार की तुलना, उदाहरण के लिए "Straße" के साथ "Strasse" अगर के रूप में String.Equals(a, b, StringComparison.Ordinal)
ही आंतरिक फ़ंक्शन को कॉल करने, यह गलत देता है।
यदि आपको यूआई सामान (सूचीदृश्य का छंटनी) के लिए संस्कृति-जागरूक तुलना की आवश्यकता है, तो आप संबंधित संस्कृतिइंफो के साथ स्ट्रिंग.कंपारे का उपयोग करें।
CultureInfo ci = new CultureInfo("de-DE");
String.Compare("Strasse", "Straße", true, ci) // Returns zero
+1। – Otiel
क्या आप सी # '==' ऑपरेटर के बारे में पूछ रहे हैं? यदि ऐसा है, तो आपको सी # टैग जोड़ना चाहिए। उदाहरण के लिए – phoog