首页 > 技术文章 > c# 委托

shiyuzuxia 2019-10-21 16:20 原文

//委托
//c#1
EventHandler handler;
void HandleDemo(object sender, EventArgs e)
{
Console.WriteLine("触发事件");
}
handler = new EventHandler(HandleDemo);
handler(null, EventArgs.Empty);
//C#2
//隐式转换为委托实例 把委托方法转为委托实例
EventHandler handle;
void handleDemo(object sender, EventArgs e)
{
Console.WriteLine("触发事件C#2");
}
handle = handleDemo;
handle(null, EventArgs.Empty);
//匿名方法
EventHandler handle;
handle = delegate (object sender, EventArgs e)
{
Console.WriteLine("触发事件C#2");
};
handle(null, EventArgs.Empty);
//匿名方法简写
EventHandler handle;
handle = delegate
{
Console.WriteLine("触发事件C#2");
};
handle(null, EventArgs.Empty);
//委托逆变性 EventHandle类型转为MouseEventHandle类型
MouseEventHandler moseHandle = handleDemo;
moseHandle(null, new MouseEventArgs())
//C#3 lambda 泛型委托(func)
/*
* Func(int,int,string) :委托类型 获取两个整数返回一个字符串
*
*
*/
Func<int, int, string> func = (x, y) => (x * y).ToString();
func(5, 20);

推荐阅读