最近看了一些博客,对委托和匿名函数和Lambda的方式有了一些更深的理解,在前人的基础上。我也写3个例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace LamdbaPricticeMine
{
class Program
{
delegate bool FilterDelegate(int num); static void Main(string[] args)
{
List<int> listNumbs = new List<int>();
// 初始化listNumbs
listNumbs.AddRange(new int[]{,,,,,}); // 1、委托
Console.WriteLine("用委托的方式输出符合要求的数");
PrintNumByDelegate(listNumbs); // 2、匿名方法
Console.WriteLine("用匿名函数的方式输出符合要求的数");
PrintNumByDelegate(listNumbs); // 3、Lambda表达式
Console.WriteLine("用Lambda的方式输出符合要求的数");
PrintNumByLambdaExpression(listNumbs);
Console.ReadLine();
} #region 用委托实现两个数相加 // 调用将委托作为参数的方法,并将实现的方法当做参数
static void PrintNumByDelegate(List<int> listNums)
{
PrintNumByDelegate(listNums, FilterDelegateEven);
}
// 定义一个将委托作为参数的方法
static void PrintNumByDelegate(List<int> listNumbs, FilterDelegate selectNums)
{
foreach (int item in listNumbs)
{
if (selectNums(item))
{
Console.WriteLine(item);
}
}
}
// 定义一个类似于委托的实现(偶数)
static bool FilterDelegateEven(int num)
{
return num % == ;
}
// 定义第二个委托的实现(基数)
static bool FilterDelegateOdd(int num)
{
return num % == ;
}
#endregion #region 匿名函数
static void PrintNumByAnonymousMethod(List<int> listNums)
{
listNums.FindAll(
delegate(int num)
{
if (num % == )
{
Console.WriteLine(num);
return true;
}
else
{
return false;
}
}
); }
#endregion #region 用Lambda的方式
static void PrintNumByLambdaExpression(List<int> listNums)
{
listNums.FindAll((int num) =>
{
if (num % == )
{
Console.WriteLine(num); return true;
}
else
{
return false;
}
});
}
#endregion }
}