简单记录一下泛型委托与Lambda表达式的关联关系
class Program
{
static void Main(string[] args)
{
//TestFunc1();
//TestDelFunc2();
//Lambda语句
//TestFunc3();
//Lambda表达式
//TestFunc4();
//TestFunc5();
TestFunc6();
Console.ReadKey(true);
}
static void TestFunc6()
{
List<string> list = new List<string> { "3","9","32","7"};
var tmp = list.MyWhere(a=>a.CompareTo("6")<0);
foreach (var item in tmp)
{
Console.WriteLine(item);
}
}
static void TestFunc5()
{
Func<int, int, int> func5 = (a, b) => a + b;
Console.WriteLine(func5(10, 90));
}
static void TestFunc4()
{
Func<int, int, int> func4 = (int a, int b) => a + b;
Console.WriteLine(func4(10, 80));
}
static void TestFunc3()
{
Func<int, int, int> func3 = (int a, int b) => { return a + b; };
Console.WriteLine(func3(10, 30));
}
static void TestFunc1()
{
Func<int, int, int> func1 = new Func<int, int, int>(AddFunc);
Console.WriteLine(func1(1, 6));
}
static void TestDelFunc2()
{
Func<int, int, int> func2 = delegate (int a, int b) { return a + b; };
Console.WriteLine(func2(10, 20));
}
static int AddFunc(int a, int b)
{
return a + b;
}
}
扩展方法需要注意:
静态类,静态方法,this指向当前扩展类型
下面的例子:是一个简单的对List类型的Where查询扩展
/// <summary>
/// 扩展方法:
/// 静态类,静态方法,this关键字
/// 把一个方法,作为一个参数,传到另外一个方法体中去
/// </summary>
public static class MyWhereExtension
{
public static List<string> MyWhere(this List<string>list,Func<string,bool>funcWhere)
{
List<string> result = new List<string>();
foreach (var item in list)
{
if (funcWhere(item))
{
result.Add(item);
}
}
return result;
}
}