Invariant कल्चर क्या है?


173

क्या कोई भी एक उदाहरण दे सकता है जो कि इनवैलेंट संस्कृति के उपयोग को प्रदर्शित करता है ? मुझे समझ में नहीं आता कि प्रलेखन क्या वर्णन करता है।


14
यह अंग्रेजी है, लेकिन किसी भी स्थान से संबद्ध नहीं है।

जवाबों:


132

अपरिवर्तनीय संस्कृति एक विशेष संस्कृति है जो उपयोगी है क्योंकि यह नहीं बदलेगी। वर्तमान संस्कृति एक उपयोगकर्ता से दूसरे में बदल सकती है, या यहां तक ​​कि एक से दूसरे में भी बदल सकती है, इसलिए आप उसी पर निर्भर रह सकते हैं।

प्रत्येक समय एक ही संस्कृति का उपयोग करने में सक्षम होना कई उदाहरणों में बहुत महत्वपूर्ण है, उदाहरण के लिए, क्रमांकन: आपके पास एक संस्कृति में 1,1 मूल्य और दूसरे में 1.1 हो सकता है। यदि आप दूसरी संस्कृति में "1,1" मान को पार्स करने का प्रयास करेंगे, तो पार्सिंग विफल हो जाएगी। हालाँकि आप किसी संख्या को स्ट्रिंग में बदलने के लिए और बाद में इसे किसी भी कंप्यूटर से किसी भी संस्कृति सेट के साथ वापस पार्स करने के लिए इनवेरिएंट संस्कृति का उपयोग कर सकते हैं।

// Use some non-invariant culture.
CultureInfo nonInvariantCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = nonInvariantCulture;

decimal dec = 1.1m;
string convertedToString = dec.ToString();

// Simulate another culture being used,
// following code can run on another computer.
nonInvariantCulture.NumberFormat.NumberDecimalSeparator = ",";

decimal parsedDec;

try
{
    // This fails because value cannot be parsed.
    parsedDec = decimal.Parse(convertedToString);
}
catch (FormatException)
{
}

// However you always can use Invariant culture:
convertedToString = dec.ToString(CultureInfo.InvariantCulture);

// This will always work because you serialized with the same culture.
parsedDec = decimal.Parse(convertedToString, CultureInfo.InvariantCulture);

9
इसके लायक क्या है, यह System.Globalizationनामस्थान में है।
जिम एच।

1
यह हमेशा काम करेगा क्योंकि आपने एक ही संस्कृति के साथ धारावाहिक बनाया << इससे मुझे कोई मतलब नहीं था, मुझे लगता है कि मैंने कुछ गलत समझा। यदि CultureInfo.InvariantCultureआप उसी संस्कृति के साथ काम करते हैं, तो काम करता है .... तो क्या यह उपयोग करने के समान नहीं है CultureInfo.CurrentCulture?
एलिसन

3
@ एलीसन यदि आप एंड्रयू के अंतिम दो कोड स्टेटमेंट को मूल प्रवाह में वापस डालते हैं, तो मुझे लगता है कि यह अधिक समझ में आएगा। यदि आप हमेशा का उपयोग करते हुए क्रमबद्ध करते हैं CultureInfo.InvariantCultureतो आप जानते हैं कि आप हमेशा एक दशमलव का उपयोग करके वापस पार्स कर पाएंगे CultureInfo.InvariantCulture। यदि आप CultureInfo.CurrentCultureक्रमबद्ध करने के लिए उपयोग करते हैं, तो आपके उपयोगकर्ता को उनकी वर्तमान संस्कृति के रूप में "एन-यूएस" हो सकता है। अगला उपयोगकर्ता जो इसे दशमलव में वापस पार्स करने के लिए जाता है, उसके पास एक विभाजक के लिए "," का उपयोग करने वाली वर्तमान संस्कृति हो सकती है।
डेविड स्पार्ट

1
@ और शायद मैं घना हूं, लेकिन डेविड की टिप्पणी के बिना मैं समझ नहीं पाया कि आप क्या कह रहे थे। मैंने आपका उत्तर स्पष्ट होने के लिए संपादित किया।
jpaugh

111

परिभाषित व्यवहार के साथ अंग्रेजी पर आधारित एक नकली संस्कृति। महान लिखने के लिए, उदाहरण के लिए, विन्यास फाइल में सामान ताकि उपयोगकर्ता द्वारा परिभाषित संस्कृति की परवाह किए बिना इसे पढ़ा और लिखा जा सके।

मूल रूप से यह एक विशिष्ट संस्कृति है जो कृत्रिम है और नहीं बदलेगी


4
विशेष रूप से, आप संख्याओं के स्ट्रिंग रूपों में या विषम स्थिति रूपांतरणों के साथ कॉमा और बिंदुओं के विभिन्न उपयोगों द्वारा नहीं पकड़े जाएंगे।
स्टीव गिलहम

8
Yesss ... के लिए विशिष्ट समस्या: * अमेरिकी प्रोग्रामर जो सोचते हैं कि शब्द अंग्रेजी है;) और फिर जर्मन ग्राहकों ने 1000 के लिए 1.00000 लिखा है;) आउच। * यहां तक ​​कि एक ही भाषा में, उदाहरण के लिए स्विट्जरलैंड और जर्मनी "।" और "," विभिन्न तरीकों से संख्याओं में। परिणाम -> विन्यास फाइल कचरा हैं। वहां पर Invariant Language का उपयोग करें;)
TomTom

23
स्टीव की टिप्पणी में जोड़ने के लिए: यह उपयोग करने के लिए संस्कृति है जब आप वास्तव में परवाह नहीं करते हैं कि चीजें कैसे दिखती हैं (आप परवाह नहीं करते हैं कि यह कॉमा या बिंदु या जो भी उपयोग करता है, क्योंकि उपयोगकर्ता इसे कभी नहीं देखेगा) लेकिन आपको हमेशा इसकी आवश्यकता होती है समान होना (उदाहरण के लिए, क्योंकि आपको जो लिखा गया है उसे पढ़ने में सक्षम होने की आवश्यकता है)।
itowlson

7

इसका उपयोग उस सामान के लिए किया जाता है जो संस्कृति की परवाह किए बिना एक ही है (उपयुक्त होने के लिए कुछ संस्कृति X में अनुवादित करने की आवश्यकता नहीं है)

उदाहरण के लिए - https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx । जब आप एक ऐप-विशिष्ट फ़ाइल लिखते हैं जिसे उपयोगकर्ता के साथ खिलवाड़ नहीं करना चाहिए, तो आपको संस्कृति पैरामीटर में लेने वाले सभी तरीकों के लिए InvariantCulture का उपयोग करना चाहिए।

ऊपर दिए गए डॉक्स के अनुसार ध्यान दें:

हालांकि, एक एप्लिकेशन को केवल उन प्रक्रियाओं के लिए अपरिवर्तनीय संस्कृति का उपयोग करना चाहिए जिनके लिए संस्कृति-स्वतंत्र परिणामों की आवश्यकता होती है, जैसे कि डेटा को फॉर्मेट करना और पार्स करना जो एक फ़ाइल के लिए बनी रहती है।


3
यह कोरोलरी को बोलता है कि इनवेरिएंट कल्चर केवल एक मध्यवर्ती प्रारूप होने का इरादा रखता है, अर्थात यदि आप उस उपयोगकर्ता को सामान प्रदर्शित कर रहे हैं जो कि इनवेरिएंट कल्चर का उत्पादन है (अर्थात, 'इनवेरिएंट कल्चर'), तो आप कर रहे हैं कुछ गलत है और अपरिवर्तनीय संस्कृति को नहीं समझते हैं।
mlhDev

3

अपरिवर्तनीय संस्कृति संस्कृति-असंवेदनशील है; यह अंग्रेजी भाषा के साथ जुड़ा हुआ है, लेकिन किसी देश / क्षेत्र के साथ नहीं।

CultureInfo.InvariantCulture, अपरिवर्तनीय संस्कृति का एक उदाहरण देता है। यह System.Globalization नामस्थान में लगभग किसी भी विधि में उपयोग किया जा सकता है जिसमें एक संस्कृति की आवश्यकता होती है।

तुलनाइन्फो, डेटटाइमफ़ॉर्मैट और नंबरफ़ॉर्मैट जैसी संपत्तियों द्वारा लौटाए गए ऑब्जेक्ट भी स्ट्रिंग की तुलना और अपरिवर्तनीय संस्कृति के प्रारूपण को दर्शाते हैं। InvariantCulture संपत्ति तब काम आती है जब आप एक संस्कृति-स्वतंत्र में लगातार डेटा प्रदर्शित करना चाहते हैं प्रारूप ।

उदाहरण के लिए, यदि आप एप्लिकेशन की वर्तमान संस्कृति से स्वतंत्र किसी विशिष्ट प्रारूप में कोई संख्या या डेटाटाइम प्रदर्शित करना चाहते हैं, तो आप CultureInfo.InvariantCulture का उपयोग कर सकते हैं ।


0

यह एक सार्वभौमिक सरल गैर-क्षेत्रीय-विशिष्ट अंग्रेजी भाषा और अन्य संबंधित जानकारी है। यह प्रोग्रामिंग भाषा की ही तरह है। आप एक सार्वभौमिक कैलेंडर स्थापित करने में इस पर भरोसा कर सकते हैं; ऐसी स्थिति में जहां आपको नियंत्रक नाम, URL, प्रतिनिधि नाम ... आदि उत्पन्न करने की आवश्यकता है। और सभी उपयोगकर्ताओं के बीच स्वाभाविक और सार्वभौमिक रूप से कार्य करने के लिए चीजों की आवश्यकता होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.