जब संख्याओं, तिथियों और समयों को स्ट्रिंग्स में स्वरूपित किया जाता है या स्ट्रिंग्स से पार्स किया जाता है तो यह निर्धारित करने के लिए एक संस्कृति का उपयोग किया जाता है कि यह कैसे किया जाता है। जैसे प्रमुख en-US
संस्कृति में आपके पास ये स्ट्रिंग प्रतिनिधित्व हैं:
- 1,000,000.00 - दो अंकों के अंश के साथ एक मिलियन
- 1/29/2013 - इस पोस्टिंग की तारीख
मेरी संस्कृति में ( da-DK
) मानों में यह स्ट्रिंग प्रतिनिधित्व है:
- 1.000.000,00 - दो अंकों के अंश के साथ एक मिलियन
- 29-01-2013 - इस पोस्टिंग की तारीख
विंडोज ऑपरेटिंग सिस्टम में उपयोगकर्ता यह भी अनुकूलित कर सकता है कि नंबर और दिनांक / समय को कैसे स्वरूपित किया जाए और वह अपने ऑपरेटिंग सिस्टम की संस्कृति की तुलना में किसी अन्य संस्कृति को भी चुन सकता है। उपयोग किया जाने वाला स्वरूपण उपयोगकर्ता का विकल्प है कि यह कैसा होना चाहिए।
इसलिए जब आप उदाहरण के लिए ToString
या String.Format
स्ट्रिंग का उपयोग करके DateTime.Parse
या Decimal.Parse
डिफ़ॉल्ट रूप से उपयोग करने के लिए उपयोगकर्ता के लिए प्रदर्शित होने के लिए एक मान को प्रारूपित करते हैं तो इसका उपयोग करना है CultureInfo.CurrentCulture
। यह उपयोगकर्ता को स्वरूपण को नियंत्रित करने की अनुमति देता है।
हालाँकि, बहुत सारे स्ट्रिंग स्वरूपण और पार्सिंग वास्तव में अनुप्रयोग और उपयोगकर्ता के बीच लेकिन एप्लिकेशन और कुछ डेटा प्रारूप (जैसे XML या CSV फ़ाइल) के बीच बदले गए तार नहीं हैं। उस स्थिति में आप उपयोग नहीं करना चाहते हैं CultureInfo.CurrentCulture
क्योंकि यदि विभिन्न संस्कृतियों के साथ स्वरूपण और पार्सिंग किया जाता है तो यह टूट सकता है। उस स्थिति में आप उपयोग करना चाहते हैं CultureInfo.InvariantCulture
(जो कि en-US
संस्कृति पर आधारित है)। यह सुनिश्चित करता है कि मान समस्याओं के बिना गोल कर सकते हैं।
कारण यह है कि ReSharper आप चेतावनी देता है कि कुछ आवेदन लेखकों इस तरह के अंतर जो अनपेक्षित परिणामों को जन्म दे सकती से अनजान हैं, लेकिन वे इस खोज में कभी नहीं है क्योंकि उनके है CultureInfo.CurrentCulture
है en-US
जो के रूप में ही व्यवहार है CultureInfo.InvariantCulture
। हालाँकि, जैसे ही एप्लिकेशन का उपयोग किसी अन्य संस्कृति में किया जाता है, जहाँ प्रारूपण के लिए एक संस्कृति का उपयोग करने का अवसर होता है और दूसरे के लिए एप्लिकेशन को पार्स करने का अवसर टूट सकता है।
तो इसे योग करने के लिए:
CultureInfo.CurrentCulture
यदि आप किसी उपयोगकर्ता स्ट्रिंग को प्रारूपित या पार्स कर रहे हैं तो (डिफ़ॉल्ट) का उपयोग करें ।
- उपयोग करें
CultureInfo.InvariantCulture
यदि आप एक स्ट्रिंग को स्वरूपित या पार्स कर रहे हैं जो सॉफ्टवेयर के एक टुकड़े से पार्स करने योग्य होना चाहिए।
- शायद ही कभी एक विशिष्ट राष्ट्रीय संस्कृति का उपयोग किया जाता है क्योंकि उपयोगकर्ता यह नियंत्रित करने में असमर्थ है कि प्रारूपण और पार्सिंग कैसे किया जाता है।