c#委托的使用(2)
在上一期的委托的使用里面,知道系统定义的委托由两个Action<参数>
和Func<参数,返回值>
,如果忘了的同学可以翻回去看看,这是链接。今天来讲讲委托的使用、匿名函数
和lamda表达式
。
委托可以当方法参数来使用。
public static void Send(Action a) //定义一个方法,参数是无返回值方法Action
{
a(); //传入方法的实现
}
//定义要传入的方法
public static void Word()
{
Console.WriteLine("Come to see me");
}
//在main方法里实现
public static void Main()
{
Send(Word);
Console.ReadLine();//暂停一下控制台
}
运行结果:
每次使用都要定义一个函数很麻烦,有时候
方法只使用一次
,可以传入匿名函数
匿名函数
:只使用一次的代码,但是用的不多
static void Send(Func<int,string> a) //定义一个方法,参数是由返回值方法Func<>
{
string str = a(1001); //执行入口,传入一个数字,接受返回值,
Console.WriteLine(str);
}
public static void Main()
{
Send(delegate (int a) //写匿名方法,只调用一次的方法
{
return a.ToString();
});
Console.ReadLine();//暂停一下控制台
}
运行结果:
lamda表达式
是简化了上匿名方法,不用写delegate关键字。是比较常见的写法
static void Send(Func<int,string> a) //定义一个方法,参数是由返回值方法Func<>
{
string str = a(1001); //执行入口,传入一个数字,接受返回值,
Console.WriteLine(str);
}
public static void Main()
{
Send( (int a) =>{ //lamda表达式,括号里面写参数,
return a.ToString();
});
Console.ReadLine();//暂停一下控制台
}
输出结果: