C# LisC# List.ForEach方法結合匿名函式的便捷使用
阿新 • • 發佈:2019-02-11
本文主要介紹了在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集合中所有的物件並列印姓名和年齡
作者:十有三