2011-10-14 14 views
6

का उपयोग कर जेनेरिक सूची में प्रत्येक ऑब्जेक्ट के लिए विधि निष्पादित करें मैं अभी भी लैम्बडास के लिए नया हूं और इसके लिए विशिष्ट विशेषताओं को ढूंढना मुश्किल लगता हूं, लेकिन क्या सामान्य वस्तु में प्रत्येक ऑब्जेक्ट के लिए एक विधि निष्पादित करना संभव है? ConvertAll कैसे काम करता है, इस तरह कनवर्ट करने की बजाय, वास्तव में एक विधि को कॉल करना।लैम्बडा

public class Mouse() 
{ 
    public void Squeak() 
    { 
    } 
} 

List<Mouse> mice = new List<Mouse>(); 

mice.Add(new Mouse()); 
mice.Add(new Mouse()); 

आप प्रत्येक माउस के लिए विधि स्क्वाक कैसे कॉल करते हैं?

mice.???(m => m.Squeak()); 

उत्तर

4

आप List<T>.ForEach() विधि (see MSDN) का उपयोग कर ऐसा कर सकते हैं:

mice.ForEach(m => m.Squeak()); 

पुनश्च: क्या मज़ा है कि इसका जवाब अपने प्रश्न में है:

आप विधि स्क्वीक कैसे कहते हैं प्रत्येक माउस के लिए ?

3

कृपया का उपयोग न करें। यह अनुक्रम ऑपरेटर की तरह दिखता है। अनुक्रम ऑपरेटर के दुष्प्रभाव नहीं होने चाहिए। आप ऐसा कुछ उपयोग कर रहे हैं जो अनुक्रम ऑपरेटर की तरह दिखता है पूरी तरह से इसके साइड इफेक्ट्स के लिए। foreach vs. ForEach:

foreach(var mouse in mice) { 
    mouse.Squeak(); 
} 

एरिक Lippert एक शानदार इस विषय से संबंधित लेख है: इसके बजाय, सिर्फ एक सादे पुराने बोरिंग पाश का उपयोग करें।

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