C#委托,delegate,匿名函数和lambda

1委托就是可以把方法当作参数传递

2可以把委托看作一个类来使用;

3委托使用前需要实例化

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication7
{
class Program
{
public delegate void BuyTicketDelegate(string msg);
static void Main(string[] args)
{
BuyTicketDelegate t1 = new BuyTicketDelegate(WriteLog);
t1("测试");
}
static void WriteLog(string msg)
{
Console.WriteLine("当前日志是:"+msg);
Console.ReadLine();
}
}
}

 

private void button1_Click(object sender, EventArgs e)
{
//匿名委托 Func<int, int> del
//类型》变量》实例
//Func是一个匿名委托类型,是一个没有名字的类型
//怎样确定它的签名:需要若干数据类型作为参数(前面的规定参数类型,最后一个规定返回值类型)
//可以直接定义一个委托变量

//匿名函数 delegate(int a) { return a; };
//与普通函数的区别就是将函数名换成了delegate

//下面的表达式,就是一个通过匿名委托定义的变量del引用了一个匿名函数
//与int a=1的过程,是相同的道理
//Func<int, int> del = delegate(int a) { return a; };
//MessageBox.Show(del(5).ToString());

//后来发现,匿名函数肯定要放到委托里,参数类型已确定好,于是有了更简捷的写法,把参数类型也省去
//就出现了lambda表达式
Func<int, int> del = a => { return a; };
MessageBox.Show(del(6).ToString());
}

转载:https://www.cnblogs.com/dawasai/p/4443903.html

posted @ 2020-04-06 20:56  .net&new  阅读(629)  评论(0编辑  收藏  举报