मैं इस बारे में कुछ समय से सोच रहा हूं, लेकिन मुझे एक निश्चित उत्तर नहीं मिल रहा है।प्रारूप के बिना Int32.ToString() का उपयोग और IFormatProvider। मुझे CA1305 चेतावनी क्यों मिलती है?
CA1305: जब भी मैं एक स्ट्रिंग
ToString()
विधि का उपयोग करने के लिए एक पूर्णांक कनवर्ट करते हैं, और मैं एक कोड विश्लेषण चलाने के लिए, मैं निम्नलिखित चेतावनी मिलती है Microsoft.Globalization: क्योंकि की व्यवहार 'int.ToString()' वर्तमान उपयोगकर्ता की लोकेल सेटिंग्स के आधार पर भिन्न हो सकता है, इस कॉल को 'class.Method()' में 'int.ToString (IFormatProvider)' पर कॉल के साथ बदलें। यदि 'int.ToString ( IFormatProvider) का परिणाम उपयोगकर्ता को प्रदर्शित किया जाएगा, तो ' CultureInfo.CurrentCulture 'को ' IFormatProvider 'पैरामीटर के रूप में निर्दिष्ट करें। अन्यथा, यदि परिणाम सॉफ़्टवेयर द्वारा संग्रहीत और एक्सेस किया जाएगा, जैसे जब यह डिस्क पर रहता है या डेटाबेस पर, 'CultureInfo.InvariantCulture' निर्दिष्ट करें।
यह बहुत अच्छी तरह से ज्ञात सामान्य CA1305 चेतावनी है, जो दिखाया जाता है जब भी आप एक विधि एक अधिभार है कि एक IFormatProvider
पैरामीटर स्वीकार करता है कि करने के लिए एक फोन करना है। हालांकि यह लगभग सभी मामलों में एक बहुत ही सही चेतावनी है, लेकिन मैं किसी भी प्रारूप या प्रारूपप्रोवाइडर बिना पूर्णांक पर डिफ़ॉल्ट ToString()
पर कॉल करते समय गलत हो सकता है। तो कृपया, अगर किसी को कुछ भी पता है जो गलत हो सकता है, तो मुझे प्रबुद्ध करें। मुझे लगता है कि IFormatProvider
अधिभार के लिए एक अच्छा कारण होना चाहिए।
वैसे, हमेशा IFormatProvider
ओवरलोड का उपयोग करके कॉल करें, क्योंकि ऐसा लगता है कि इसका प्रदर्शन लाभ भी है। अगर किसी के पास इस पर कोई अंतर्दृष्टिपूर्ण टिप्पणियां हैं, तो उन्हें भी साझा करने में संकोच न करें।
बहुत स्पष्ट उदाहरण है, धन्यवाद। मुझे पता नहीं था कि नकारात्मक संस्कृति प्रति संस्कृति भिन्न हो सकती है। –