2011-08-31 9 views
6

कारण मैं पूछ रहा हूं क्योंकि मैंने केवल सिल्वरलाइट में उपयोग करने के लिए एक विस्तार विधि लिखा है, यह पता लगाने के लिए कि उस विशेषता ने रजत प्रकाश के लिए काम करना शुरू कर दिया है।क्या कोई कारण है कि सिल्वरलाइट और अन्य सी # पुस्तकालयों में सिस्टम डीएल अलग है

उदाहरण

string sentence = "I am a sentence that has some words"; 
sentence.Contains("N"); //would return false, silverlight true 
sentence.Contains("n"); //would return true, silverlight true 

क्यों वहाँ एक विशेष प्रणाली है कि मामले insenstive रूप comparsion करता सिल्वरलाइट के लिए ढांचे में dll है?

मैंने कई तरीकों से इसमें भाग लिया है, यह बहुत परेशान है कि वे या तो अलग-अलग कार्य करते हैं या सामान्य रूप से गायब हैं।

+0

मैं ज्यादातर चिढ़ वहाँ कहते हैं के बीच सिस्टम में पागल मतभेद हैं कि कर रहा हूँ \ Program Files (x86) \ संदर्भ विधानसभाओं \ Microsoft \ फ्रेमवर्क \ सिल्वरलाइट \ v4.0 \ System.dll C: \ Program फ़ाइलें (x86) \ संदर्भ असेंबली \ Microsoft \ Framework \ .NETFramework \ v4.0 \ System.dll वे सिस्टम और सिस्टम दोनों हैं। String.Contains() अलग-अलग कार्य करता है, यह किसी भी चीज़ से परेशान है लेकिन मैं दौड़ता रहता हूं इस तरह की छोटी चीजों में। –

+1

मैंने अभी परीक्षण किया है कि एक मानक सिल्वरलाइट परियोजना पर; यह –

उत्तर

3

कारण मैं पूछ रहा हूं क्योंकि मैंने सिल्वरलाइट में उपयोग करने के लिए केवल एक विस्तार विधि लिखा है, यह पता लगाने के लिए कि उस विशेषता ने रजत प्रकाश के लिए काम करना शुरू कर दिया है।

2,0 के बाद (2.0, 3.0, 3.5, 4.0, SL 3/4 WP 7.0/7.1) से नेट के सभी संस्करणों के लिए एक public bool string.Contains(string) विधि नहीं है।

यह ध्यान रखना दिलचस्प है कि एसएल संस्करण केवल एसएल 3/4 - से सूचीबद्ध है क्या यह 2.0 समाधान से अपडेट किया गया है? तो इसके लिए खाता बना सकता है।

अन्यथा, एक परिभाषित विधि हमेशा एक विस्तार विधि पर प्राथमिकता लेती है, इसलिए आपकी एक्सटेंशन विधि को कभी नहीं कहा जाना चाहिए (हम .NET 1.1 को बाहर कर सकते हैं क्योंकि सी # 1.2 कंपाइलर में विस्तार विधियां शामिल नहीं हैं)।

.NET 2.0 के लिए MSDN दस्तावेज इस रूप में:

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

अन्य सभी (Silverlight सहित) संस्करणों सूचीबद्ध हैं के रूप में:

इस विधि एक क्रमसूचक (केस-संवेदी और संस्कृति-संवेदी) तुलना करता है। खोज इस स्ट्रिंग की पहली वर्ण स्थिति से शुरू होती है और अंतिम चरित्र स्थिति के माध्यम से जारी होती है।

आप अन्यथा देख रहे हैं (कृपया तिहरा की जांच), यह एक रूपरेखा त्रुटि हो सकती है ... लेकिन मैं सावधानी से एक सरल व्याख्या की उम्मीद कर रहा हूँ। ग:

+0

अपेक्षित के रूप में 'झूठा' वापस लौटा, हाँ मैंने देखा कि यह संस्करण 3 और 4 में शुरू हुआ था, लेकिन मुझे लगता है कि मेरा प्रश्न अभी और क्यों नहीं दिया गया है। गैर-चांदी के संस्करण को समान स्थिरता रखने के लिए समान संवेदनशीलता नहीं है? –

+1

@ क्यूबिकल एर ... उन्होंने किया? कम से कम यही एमएसडीएन राज्य करता है। –

+1

@ क्यूबिकल मैंने एमएसडीएन उद्धरणों को स्पष्ट किया; .NET 2.0 में यह केस-संवेदी, संस्कृति-संवेदनशील है; ** ** बाकी सब कुछ ** यह केस-संवेदी, संस्कृति-असंवेदनशील है। तो किसी भी तरह से, यह मामला संवेदनशील होना चाहिए –

संबंधित मुद्दे