2008-10-06 11 views
13

का उपयोग कर 2.0 में कुछ विशेषताएं क्या हैं जो .NET 2.0 में उपयोग की जा सकने वाली कुछ नई विशेषताएं हैं जो विजुअल स्टूडियो 2008 में अपग्रेड करने के बाद सी # 3.0/3.5 के लिए विशिष्ट हैं? इसके अलावा, कुछ विशेषताएं क्या उपलब्ध नहीं हैं?सी # .NET 3.0/3.5 2.0 में विजुअल स्टूडियो 2008

उपलब्ध

  • lambdas
  • एक्सटेंशन तरीके (एक खाली System.Runtime.CompilerServices.ExtensionAttribute की घोषणा के द्वारा)
  • स्वत: गुण
  • वस्तु initializers
  • संग्रह initializers
  • LINQ से ऑब्जेक्ट्स (IE को कार्यान्वित करके संख्येय विस्तार के तरीकों, LinqBridge

उपलब्ध नहीं

  • अभिव्यक्ति पेड़
  • WPF/Silverlight पुस्तकालय
+0

अभिव्यक्ति पेड़ मोनो के उपयोग के माध्यम से उपलब्ध हैं। नीचे मेरा जवाब देखें। –

उत्तर

16

आप किसी भी नई सी # 3.0 विशेषता यह है कि उत्सर्जन से संकलक द्वारा नियंत्रित किया जाता है का उपयोग कर सकते 2.0 संगत आईएल और संदर्भित नहीं करती नया 3.5 विधानसभाओं में से किसी:

  • lambdas (, Func<..> रूप में प्रयोग नहीं Expression<Func<..>>)
  • एक्सटेंशन तरीके (एक खाली घोषणा करके System.Runtime.Com pilerServices.ExtensionAttribute)
  • स्वत: गुण
  • वस्तु initializers
  • संग्रह initializers
  • ऑब्जेक्ट (IEnumerable < टी > विस्तार के तरीकों को लागू करने से करने के लिए LINQ, LinqBridge देख)
1

lambdas & एक्सटेंशन तरीकों संकलक द्वारा विशुद्ध रूप से नियंत्रित किया जाता है और देखें) कर सकते हैं .NET 2.0 ढांचे के साथ प्रयोग किया जाना चाहिए।

+1

प्रतिनिधियों के रूप में Lambdas, हाँ। लेकिन अभिव्यक्ति के रूप में लैम्बडास .NET 3.5 से अभिव्यक्ति वर्ग (एसएस) पर भरोसा करते हैं। –

3

विस्तार तरीकों को परिभाषित करने के लिए, अगर आप को लक्षित कर रहे निम्नलिखित वर्ग देने की आवश्यकता होगी .NET 2.0:

namespace System.Runtime.CompilerServices { 
    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)] 
    sealed class ExtensionAttribute : Attribute { } 
} 
+0

मुझे 3.5 एसपी 1 प्रोजेक्ट में 2.0 के लिए निंजा 1.0 का उपयोग करने में सक्षम होने के लिए यह भी करना था (आपको यह दूसरी साइट पर सुझाव देना) था। बहुत wierd ... –

5

बहुत कुछ सब कुछ! डैनियल मॉथ इस here और here को शामिल करता है। यह केवल रनटाइम समर्थन छोड़ देता है: LINQ-to-Objects LINQBridge द्वारा प्रदान किया जाता है - जो अभिव्यक्ति समर्थन और LINQ-to-SQL जैसे टूल जैसे बड़े एपीआई छोड़ देता है। ये उचित रूप से .NET 2.0 पर पोर्ट किए जाने के लिए बहुत बड़े हैं, इसलिए मैं इनके लिए .NET 3.5 का उपयोग करूंगा।

5

मैं इसे article on my site में कवर करता हूं।

.NET 2.0 को लक्षित करते समय लगभग सभी सी # 3.0 सुविधाएं उपलब्ध हैं। विस्तार विधियों के लिए, आपको एक अतिरिक्त विशेषता को परिभाषित करने की आवश्यकता है। अभिव्यक्ति पेड़ बिल्कुल उपलब्ध नहीं हैं। क्वेरी अभिव्यक्ति समर्थन "सामान्य" सी # नियमों के बाद अनुवाद पर आधारित होता है, इसलिए आपको चयन, कहां आदि विधियों को प्रदान करने के लिए कुछ चाहिए। LINQBridge वास्तविक तथ्य "LINQ टू ऑब्जेक्ट्स .NET 2.0" कार्यान्वयन है। आप Func और Action प्रतिनिधि प्रतिनिधियों को लैम्ब्डा एक्सप्रेशन के साथ काम करना आसान बनाने के लिए घोषित करना चाहते हैं - और फिर जब आप .NET 3.5

2

पर जाते हैं तो आप उन्हें सिस्टम के मोनो संस्करण का उपयोग कर सकते हैं .COR जो LINQ & अभिव्यक्ति पेड़ का पूरी तरह से समर्थन करता है। मैंने अपने स्रोत को .NET 2.0 के विरुद्ध संकलित किया, और अब मैं इसे अपने .net2.0 प्रोजेक्ट्स में उपयोग कर सकता हूं। यह उन परियोजनाओं के लिए बहुत अच्छा है जिन्हें Win2k पर तैनात करने की आवश्यकता है, जहां .net3.5 उपलब्ध नहीं है।

+0

क्या इन अभिव्यक्ति पेड़ों को .NET 2.0 SP1 की आवश्यकता है? – Lucas

+0

नहीं। सादा पुराना .NET 2.0। Win2k मशीनों पर भी महान काम करता है। –

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