13

के बाद से स्ट्रिंग को लागू करता है IEnumerable<char>, मैं Intellisense में Enumerable विस्तार तरीकों को देखने के लिए, उम्मीद कर रहा था उदाहरण के लिए, जब मेंक्यों वी.एस. नहीं स्ट्रिंग वर्ग के लिए Intellisense में 2008 प्रदर्शन विस्तार तरीकों

String s = "asdf"; 
s. 

मैं अवधि टाइपिंग .Select<char>(...), .ToList<char>(), आदि को देखने की उम्मीद कर रहा था, तब मुझे यह देखने के लिए आश्चर्य हुआ कि एक्सटेंशन विधियों वास्तव में स्ट्रिंग क्लास पर काम करते हैं, वे इंटेलिजेंस में दिखाई नहीं देते हैं। क्या किसी को पता है कि यह क्यों है? यह this प्रश्न से संबंधित हो सकता है।

उत्तर

15

यह स्पष्ट डिजाइन द्वारा है। समस्या यह है कि स्ट्रिंग सबसे निश्चित रूप से IEnumerable<T> लागू करता है, ज्यादातर लोग इसके बारे में नहीं सोचते हैं, या अधिक महत्वपूर्ण रूप से इसका उपयोग करते हैं।

स्ट्रिंग में काफी कम तरीके हैं। प्रारंभ में हमने स्ट्रिंग के विस्तार विधियों को फ़िल्टर नहीं किया था और नतीजा बहुत नकारात्मक प्रतिक्रिया थी। यह सही आयात के साथ कई बार विधियों की संख्या तीन गुना हो गया। सभी एक्सटेंशन विधियों को प्रदर्शित करने के साथ, लोग अक्सर शोर में देख रहे स्ट्रिंग विधि को नहीं देख पा रहे थे।

स्ट्रिंग एक ... सरल प्रकार है और यह इसे देखने के लिए कि जिस तरह से :)

यह अभी भी स्ट्रिंग पर एक विस्तार विधि कॉल करने के लिए पूरी तरह से संभव है बेहतर है। यह इंटेलिजेंस में दिखाई देने की संभावना नहीं है।

संपादित करें: वास्तव में स्ट्रिंग में कुछ विधियां हैं। लेकिन क्योंकि उनमें से कई अधिभार हैं वे इंटेलिजेंस में पतन हो जाते हैं।

+0

क्या यह वीएस में हार्ड-कोड किया गया है, या क्या स्ट्रिंग या एन्यूमेरेबल क्लास पर कुछ विशेषता है जिसका उपयोग हम उसी प्रभाव को पूरा करने के लिए कर सकते हैं? – foson

+0

मुझे विश्वास नहीं है कि एक विशेषता या कॉन्फ़िगरेशन है जिसे रोकने या इस व्यवहार को पाने के लिए tweaked किया जा सकता है। – JaredPar

+0

यह वास्तव में विन्यास योग्य होना चाहिए। यदि आपके पास विस्तार विधियां हैं तो मुझे लगता है कि आपको वास्तव में बकवास के साथ रहने की जरूरत है। यह सिर्फ एक बहुत ही स्पष्ट और अप्रत्याशित व्यवहार की तरह लगता है। – BobbyShaftoe

-2

यह होना चाहिए।

For example you can write it public static string myExtensionMethod(this String yuppi){ 
} 

फिर यह वहां होना चाहिए।

+0

क्या? यह काम नहीं कर रहा है ! – Tarik

2

जानकारी के लिए, यह VS2010 में बदल गया है (कम से कम बीटा 2 में)। ऐसा लगता है कि इस फ़िल्टरिंग को हटा दिया गया है (संभवतः यह बहुत अधिक भ्रम पैदा करता है), और विस्तार-विधि ग्लिफ के साथ विधियां अब दिखाई दे रही हैं।

+0

एक और बुद्धिमान Intellisense। अति उत्कृष्ट। – foson

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