2009-07-21 26 views
5

यदि मेरे पास विजुअल स्टूडियो 2008 है और मैं .NET 2.0 एप्लिकेशन को लक्षित करता हूं, तो क्या मैं अभी भी लैम्ब्डा अभिव्यक्तियों का उपयोग कर सकता हूं? लैम्ब्डा अभिव्यक्तियों की मेरी समझ यह है कि यह कंपाइलर में निर्मित एक विशेषता है, ढांचा नहीं, इसलिए मेरा निष्कर्ष यह होगा कि मैं .NET 2.0 एप्लिकेशन में लैम्ब्डा का उपयोग कर सकता हूं। क्या कोई मुझे बता सकता है कि ऐसा क्या है?वीबी.नेट लैम्ब्डा अभिव्यक्ति

उत्तर

12

हां यह पूरी तरह से समर्थित है। जब तक आप एक अभिव्यक्ति वृक्ष या अन्यथा संदर्भ प्रणाली नहीं बनाते हैं। कोर, System.Xml.Linq, आदि ... नीचे लक्ष्यित 2.0 एप्लिकेशन में Lambda अभिव्यक्तियों का उपयोग करने के लिए यह पूरी तरह कानूनी है। यह वीएस -2008 (वीबी 9) में पेश की गई किसी अन्य कंपाइलर सुविधा के बारे में सच है।

संपादित

कई जवाब गलत रूप से राज्य है कि लैम्ब्डा भाव 3.5 या 3.0 सुविधा की एक विशेषता है। लैम्ब्डा एक्सप्रेशन एक कंपाइलर फीचर है जो फ्रेमवर्क नहीं है। उन्हें कार्य करने के लिए कोई ढांचा समर्थन की आवश्यकता नहीं है और 2.0 तक लक्षित एप्लिकेशन में उनका उपयोग करने के लिए यह पूरी तरह कानूनी है।

एकमात्र जगह जो आपको परेशानी में आती है वह यह है कि यदि आप लैम्ब्डा को अभिव्यक्ति वृक्ष के रूप में इस्तेमाल करते हैं। अभिव्यक्ति पेड़ एक कंपाइलर और ढांचे की सुविधा दोनों हैं और 3.5 को सही ढंग से कार्य करने की आवश्यकता है। लेकिन आपको इसे सक्षम करने के लिए कड़ी मेहनत करनी है क्योंकि हम इसे सक्रिय रूप से होने से रोकने की कोशिश करते हैं।

-3

यह काम नहीं करता है। लिंक का उपयोग करने के लिए System.Linq को फ्रेमवर्क असेंबली का हिस्सा होना आवश्यक है, जो .NET 2.0 में नहीं है।

+0

हाँ, दंदन का अधिकार। इसके अलावा, नहीं, आप 3.5 बेंगलियों को बस अपने बिन में डालकर संदर्भित नहीं कर सकते हैं। मैंने पूछा है ... समस्या यह है कि सिस्टम नेमस्पेस में भी बहुत सारे बदलाव हुए हैं। – andy

+0

यह मामला नहीं है। 2.0Q को लक्षित करने के लिए LINQ को निश्चित रूप से 3.5 कंपाइलर (Vb9) का उपयोग करके समर्थित किया गया है बशर्ते आपके पास चयन और कहां जैसे LINQ विधियों के पर्याप्त रूप से उपलब्ध हों। सी # के लिए भी सच है – JaredPar

2

हाँ आप सही हैं। आप अनाम विधियों के स्थान पर लैम्ब्डा अभिव्यक्तियों का उपयोग कर सकते हैं। कंपाइलर बाकी को सॉर्ट करेगा। इसे आज़माएं:

int sum = 0; 
Array.ForEach(new[] {1, 2, 3, 4}, x => sum += x); 

आप क्या नहीं कर सकते हैं .NET 3.5 (यानी लिंक) की किसी भी नई कार्यक्षमता का उपयोग करना है। ऐसा करने के लिए System.Linq, System.Core, आदि .. में संदर्भ जोड़ने की आवश्यकता है, जो .NET 2.0 में मौजूद नहीं हैं।

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