1. 程式人生 > >C# LisC# List.ForEach方法結合匿名函式的便捷使用

C# LisC# List.ForEach方法結合匿名函式的便捷使用

本文主要介紹了在C#中,List.ForEach方法結合匿名函式的用法,由於List.ForEach方法的主要引數是Action action委託,所以為了能使我們更加方便的使用這個方法,我們可以使用匿名函式不顯式宣告 Action 變數,這樣就不用再宣告額外的Action 委託例項,省去了一大步驟。

參考資料和相關文件(來自微軟的線上MSDN):

List.ForEach 方法:http://msdn.microsoft.com/zh-cn/library/bwabdf9z.aspx
匿名函式(C# 程式設計指南):http://msdn.microsoft.com/zh-cn/library/bb882516.aspx


Action 委託:http://msdn.microsoft.com/zh-cn/library/018hxwa8.aspx
C#中泛型集合List是經常用到的類,如果要對List物件進行迴圈和迭代操作,一般是使用for或者foreach迴圈,當然還有LINQ和lambda 表示式這兩種方式。但是List本身自帶了一個迭代的操作方法ForEach,這個方法可能會比較少用到,因為從官方的MSDN文件上來看,List.ForEach方法需要傳入一個Action action委託,這樣使用起來就會很不方便。與其這麼麻煩的宣告一個委託例項,還不如直接使用foreach迴圈集合來得便利,所以我們就需要結合匿名函式來使用,可以不顯示宣告Action action委託例項,使得該方法用起來更加便捷。

下面直接上程式碼,先來一個簡單的範例(程式碼在控制檯應用程式中執行);

static void Main(string[] args)
{            
    List<int> _list = new List<int>();
    int tempCount = 0;
    //迴圈10次新增一些資料到List集合中
    for (int i = 0; i < 10; i++)
    {
        tempCount += i;
        _list.Add(tempCount);
    }

    //使用Foreach方法打印出List中數值
    _list.ForEach((x) =>
    {
        Console.WriteLine(x);
    });

    Console.ReadKey();
}

這裡我們使用ForEach方法遍歷了List中的所有數值並打印出來,可以看到我們傳入的引數是一個匿名函式:

(x)=>{
//此處省略業務程式碼。。。。
}
最終顯示結果如圖所示:

使用ForEach方法遍歷了List中的所有數值並打印出來

下面使用一個Person物件的集合來演示ForEach方法,程式碼如下(程式碼在控制檯應用程式中執行):

/// <summary>
/// Persion類
/// </summary>
public class Person
{
    /// <summary>
    /// 姓名
    /// </summary>
    public string Name { get; set; }
    /// <summary>
    /// 年齡
    /// </summary>
    public int Age { get; set; }
}
static void Main(string[] args)
{            
    List<Person> _list = new List<Person>();

    //新增部分資料到集合中
    _list.Add(new Person() { Name="張三",Age=21});
    _list.Add(new Person() { Name = "李四", Age = 23 });
    _list.Add(new Person() { Name = "王五", Age = 25 });
    _list.Add(new Person() { Name = "趙六", Age = 26 });

    //使用Foreach方法打印出List中的資料
    _list.ForEach((x) =>
    {
        Console.WriteLine(string.Format("姓名:{0},年齡:{1}",x.Name,x.Age));
    });

    Console.ReadKey();
}

這裡的List集合的泛型是一個我們自己宣告Person物件,程式碼中使用ForEach方法迴圈遍歷List集合中所有的物件並列印姓名和年齡。

最終顯示結果如圖所示:

使用ForEach方法迴圈遍歷List集合中所有的物件並列印姓名和年齡

作者:十有三