2010-02-25 8 views
8

क्या कोई मुझे लैम्ब्डा का उपयोग करने और एक अच्छा उदाहरण देने का एक अच्छा स्पष्टीकरण दे सकता है। मैंने इसे देखा है लेकिन मुझे नहीं पता कि यह क्या है या करता है।लैम्ब्डा स्पष्टीकरण और यह एक अच्छा उदाहरण है

+0

मैं अत्यधिक है कि साइट पर जाकर नहीं सलाह देते हैं क्योंकि यह मेरे लिए विज्ञापन स्पैम की तरह दिखता है। – BigOmega

उत्तर

16

एक लैम्ब्डा अभिव्यक्ति एक गुमनाम समारोह बनाने के लिए प्रयोग किया जाता है।

Func<int, int> increase = (a => a + 1); 

फिर आप प्रतिनिधि उपयोग कर सकते हैं समारोह कॉल करने के लिए:: यहाँ एक गुमनाम समारोह एक प्रतिनिधि चर को असाइन किया गया

var answer = increase(41); 

आमतौर पर लैम्ब्डा भाव एक विधि के लिए एक प्रतिनिधि भेजने के लिए उपयोग किया जाता है, के लिए उदाहरण ForEach विधि के लिए एक प्रतिनिधि भेजने इतना है कि यह सूची में प्रत्येक तत्व के लिए कहा जाता है:

List<int> list = new List<int>(); 
list.Add(1); 
list.Add(2); 

list.ForEach(n => Console.WriteLine(n)); 
+0

आपके उत्तर के लिए धन्यवाद। मैं इसकी जबरदस्त शक्ति देख सकता हूं और – Zyon

+1

को कितना समय बचा सकता है इसके अलावा बाहरी कार्यक्षेत्र में चरों तक पहुंचने के लिए लैम्ब्डा के भीतर भी संभव है। तो उपर्युक्त उदाहरण में आप लैम्बडा अभिव्यक्ति के भीतर सूची ऑब्जेक्ट तक पहुंच सकते हैं। – Oliver

2

एक लैम्ब्डा बस एक प्रतिनिधि है, यह एक अनाम कार्य है जिसे आप बाद में निष्पादन के लिए बना सकते हैं।

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

http://msdn.microsoft.com/en-us/library/bb397687.aspx

+2

एक लम्दा अभिव्यक्ति एक प्रतिनिधि नहीं है। यह आसानी से एक प्रतिनिधि को परिवर्तनीय है, लेकिन यह एक अभिव्यक्ति वृक्ष में भी परिवर्तनीय है, जो एक प्रतिनिधि के लिए नहीं है। Http://msdn.microsoft.com/en-us/library/bb397951.aspx – Manu

+0

उचित बिंदु देखें, –

2

शायद मैं थोड़ा सा सरल रहा हूं, लेकिन, यदि मैं आप थे, तो शुरू करने के लिए मैं सिर्फ लैम्बडा को नेस्टेड फोरैच लूप या शीर्ष एन तत्वों जैसी चीजों को हटाकर कोड को छोटा करने का एक अच्छा तरीका मानता हूं। । एक

cheapHotels = hotels.Where(h => h.PriceFrom < 50) 

एक बार यह आप क्लिक करने के लिए और अधिक जटिल कुछ पर स्थानांतरित कर सकते हैं शुरू होता है, यह है:

तो अगर आप सस्ते कमरे आप (IEnumerable में होटल मानकर) कर सकता है के साथ कुछ खोजने के लिए दौर होटल चला रहे हैं यादृच्छिक विधि है कि मैं अपने वर्तमान प्रोजेक्ट lambdas का उपयोग करने में पा सकते हैं (शायद कहीं और से nicked!):

private T DeserializeObject<T>(XmlDocument xDoc, string typeName) 
{ 
    Type type = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Single(t => t.FullName == typeName); 

    object o; 
    var serializer = new XmlSerializer(typeof(T)); 
    using (TextReader tr = new StringReader(xDoc.InnerXml)) 
    { 
     o = serializer.Deserialize(tr); 
     tr.Close(); 
    } 
    return (T)o; 

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