2008-12-13 15 views
6

अपनी पोस्ट में डालो। मैं एक जोड़े से शुरू करूंगा, देखते हैं कि हम कितना एकत्र कर सकते हैं।सी # लैम्ब्डा अभिव्यक्तियों का उपयोग किस तरीके से करते हैं?

तरह

animals.ForEach(animal=>Console.WriteLine(animal.Name)); 

उन्हें आने दो एक संग्रह पुनरावृत्ति के लिए

button.Click += (sender,args) => 
{ 
}; 

तरह इनलाइन ईवेंट हैंडलर्स प्रदान करने के लिए एक संग्रह

var dogs= animals.Where(animal => animal.Type == "dog"); 

में आइटम ढूंढने के लिए, !!

var dude = mySource.Select(x => new {Name = x.name, Surname = x.surname}); 
+1

SO पहले से ही पर्याप्त बिंदुहीन "प्रश्न"? पूछने के बारे में कैसे लोग "if" कथन का उपयोग करते हैं? या कक्षाएं? int, शायद? लैम्बदास भाषा की हर दूसरी सुविधा के समान भाषा में बस एक आसान नई सुविधा है। क्या हमें हर समय इन दोहराए जाने वाले प्रश्नों की ज़रूरत है? – jalf

+0

आधा, मैं स्वयं कोड के माध्यम से गया और लिखा, और पाया कि मैं विभिन्न दिलचस्प तरीकों से लैम्ब्डा का उपयोग कर रहा हूं - इफ्स और व्हेल की तुलना में, लैम्ब्डा एक और अधिक शक्तिशाली विशेषता है। इसलिए, मैंने सोचा कि यह पोस्ट स्वयं और दूसरों को अधिक उपयोग सीखने में मदद करेगी। – amazedsaint

उत्तर

3

एक कस्टम वस्तु रिटर्निंग।

static Func<int, int> Foo(int n) 
    { 
     return a => n += a; 
    } 

यहां बंद होने का उपयोग नोट करें। यह एक संचयक बना रहा है जो कॉल के बीच एन के मान को "याद करता है" - कक्षा या आवृत्ति चर के बिना।

+2

क्या आप जानते थे, आप बस नया {x.name, x.surname} कर सकते हैं? इस उदाहरण में गुण लोअरकेस होंगे। – leppie

-1

एक अनाम नाम व्यक्त करने के लिए।

+0

@ डेवज़िच - ठीक है, शायद मैं चार साल बाद ऐसा करूँगा। –

+1

आप उत्तर हटा सकते हैं ... मैं यहां टूल्स के साथ भी मिला ... – gdoron

+0

@ डेवज़िच। दुर्भाग्य से यह सवाल का जवाब देता है। यही कारण है कि मैंने हटाने के लिए सवाल ध्वजांकित किया ... – gdoron

2

एक पंक्ति समारोह

Func<int, int> multiply = x => x * 2; 
int y = multiply(4); 
2

यहाँ एक अलग से एक - आप उन्हें (like this) उपयोग कर सकते हैं लापता "infoof"/"nameof" सी # में ऑपरेटरों अनुकरण करने के लिए - यानी ताकि बजाय एक करने के लिए हार्ड-कोड की एक स्ट्रिंग के रूप में संपत्ति का नाम, आप एक लैम्ब्डा का उपयोग कर सकते हैं। इसका मतलब है कि यह संकलन समय पर मान्य है (जो तार नहीं हो सकते हैं)।

public Double GetLengthOfElements(string[] wordArr) { 

    double count = wordArr.Sum(word => word.Length); 
    return count; 
} 

ज़रूर धड़क रहा है foreach

0

एक बहु थ्रेडेड componenet घटना से यूआई को अद्यतन करने के लिए विधि आवेदक के साथ

void Task_Progress(object sender,TaskProgressArgs e) 
{ 
    BeginInvoke(new MethodInvoker(() => UpdateProgress(e))); 
} 
1

का उपयोग कर:

Linq के साथ कुल संचालन के लिए

वहाँ जाहिर है, इस के लिए एक प्रदर्शन लागत है इसलिए "सिर्फ मनोरंजन के लिए", लेकिन दिलचस्प ...

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