2010-01-12 12 views
7

है दोस्तों,मुझे कब लैम्बडा एक्सप्रेशन का उपयोग करना चाहिए जो सी # 3.0 के साथ आता है?

मेरे साथी डेवलपर आज सुबह लैम्ब्डा अभिव्यक्तियों के बारे में बात कर रहे थे। तो मैं इसे यहाँ इतना

  • में पूछने के लिए जब मैं लैम्ब्डा अभिव्यक्ति जो सी # 3.0 के साथ आता है का उपयोग करना चाहिए का फैसला किया?
+1

एक लैम्बाडा अभिव्यक्ति? मैंने सोचा कि सी # एक आधुनिक भाषा थी, तो यह इतनी पुरानी नृत्य सनकी का उपयोग क्यों करती है? (एससीएनआर ;-) –

+0

किसी भी धारणा को जेए मत करो, जब तक आप यह नहीं जानते कि यह क्या है और इसका उपयोग कहां किया जाता है;) सी # में लैम्ब्डा एक्सप्रेशन बहुत अच्छा है और LINQ जैसे आधुनिक तकनीक में कुछ अपरिवर्तनीय है। –

+0

jae lambda और lambada को भ्रमित नहीं करते – baldy

उत्तर

2

लिख सकते हैं मुझे नहीं लगता कि एक सामान्य नियम है जब आपके उन्हें इस्तेमाल करना चाहिए है कि है, लेकिन अगर मैं अपने आप को मैं करने के लिए लग रही है जब भी मैं अनाम विधियों का उपयोग करता हूं उन्हें उपयोग करने के लिए प्रवृत्त होते हैं। अक्सर यह होता है जब ThreadPool का उपयोग करते हुए, या LINQ क्वेरीज़ करते समय किसी नए थ्रेड में कुछ कोड उत्पन्न करते हैं।

ThreadPool उदाहरण:

ThreadPool.QueueUserWorkItem(state => { 
    // the code to run on separate thread goes here 
}); 

LINQ:

var myItems = GetSomeIEnumerable() 
        .Where(o => o.SomeProperty.Equals("some value")); 
        .OrderBy(o => o.SomeOtherProperty); 
5

एक लैम्ब्डा अभिव्यक्ति एक अज्ञात फ़ंक्शन है जिसमें अभिव्यक्तियां और कथन शामिल हो सकते हैं, और इसका उपयोग प्रतिनिधि या अभिव्यक्ति वृक्ष प्रकार बनाने के लिए किया जा सकता है।

del myDelegate = delegate(int x){return x*x; }; 
int j = myDelegate(5); //j = 25 

का उपयोग करने का उम्मीद

आप

del myDelegate = x => x * x; 
int j = myDelegate(5); //j = 25 
1

लघु जवाब: "C# in depth" से तो चलो सर्वोच्च मतदान साथी Jon Skeet पढ़ें। यह एक उत्कृष्ट पुस्तक है और आप नई सी # 3 विशेषताओं के बारे में सब कुछ सीखेंगे, खासकर जब उन्हें लैम्ब्डा अभिव्यक्तियों सहित उपयोग करना है।

0

कम से कम एक ला

myUserControl.Loaded += (sender, e) => DoSomething(); // coding horror!!!1 :-P 

घटनाओं के लिए उपयोग नहीं है क्योंकि अब तक तुम अब भी सदस्यता समाप्त करने और इतनी आसानी से अब और फिर उन बातों को साफ नहीं किया जा सकता है। निश्चित रूप से WeakEventHandler कारखानों और वहां सामान हैं लेकिन उपयोगकर्ता नियंत्रण को अपने माता-पिता से हटा दिए जाने के बाद मैन्युअल रूप से सभी ईवेंट हैंडलर को निकालना सबसे अच्छा है।

अन्य सभी के लिए, मुझे लगता है कि वे पठनीयता में बहुत सुधार करते हैं, इसलिए अपने निर्णय पर उपयोग करें।

+0

मैं असहमत हूं। मैं उन्हें घटनाओं के लिए विशेष रूप से उपयोगी लगता हूं। मैं केवल कुछ मामलों में सदस्यता छोड़ने के लिए सदस्यता छोड़ सकता हूं। –

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