using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _03泛型委托
{
class Program
{
static void Main(string[] args)
{
#region 泛型委托
//Action 系统自定义的委托用来保存无参数无返回值的方法
//1.保存一个无参数无返回值的方法
Action a1 = new Action(F1);
a1();
//Action<T> Action的泛型版本 用来保存有参数无返回值的方法
//2.保存一个有参数无返回值的方法
Action<string> a2 = new Action<string>(F2);
a2("有参数无返回值的方法");
Action<int, int> a22 = (x, y) => { Console.WriteLine(x + y); };
a22(1, 2);
//Func委托最后一个参数永远表达式返回值内容
//3.保存有参数有返回值的方法
Func<int, int, int, int> func1 = F3;
int print = func1(1, 2, 3);
Console.WriteLine(print);
#endregion
Console.WriteLine("=============================================================");
#region 使用lambda表达式
List<int> l1 = new List<int> { 1, 23, 4, 5, 656, 5, 75, 2, 323, 2, 456, 4, 2, 234, 645, 6 };
//IEnumerable<int> ie = l1.Where(condition);
IEnumerable<int> ie = l1.Where(m => { return m > 6; });
IEnumerable<int> ie2 = l1.SkipWhile(m => { return m > 10; });
foreach (var item in ie)
{
Console.WriteLine(item);
}
Console.WriteLine("=============================================================");
foreach (var item in ie2)
{
Console.WriteLine(item);
}
#endregion
Console.ReadKey();
}
static bool condition(int x)
{
return x > 6;
}
static int F3(int x, int y, int z)
{
return x + y + z;
}
static void F2(string s1)
{
Console.WriteLine(s1);
}
static void F1()
{
Console.WriteLine("无参数无返回值的方法");
}
}
}