簡體   English   中英

使用lambda為通用列表中的每個對象執行方法

[英]Execute method for each object in generic list using lambda

我還是lambdas的新手並且發現很難找到它的特定功能,但是是否可以為通用列表中的每個對象執行一個方法? 與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());

您可以使用List<T>.ForEach()方法( 請參閱MSDN ):

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

PS:你的問題答案有多么有趣:

你如何稱呼每只鼠標的方法吱吱聲?

請不要使用List<T>.ForEach 它看起來像一個序列運算符。 序列操作符不應有副作用。 您正在使用看起來像序列運算符的東西,僅用於其副作用。 相反,只需使用一個普通的無聊循環:

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

Eric Lippert有一篇與此主題相關的精彩文章: foreach vs. ForEach

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM