0.
先看 一秒定时器的 触发事件就是用委托来实现的,如下:
Timer myTimer = new Timer(1000);myTimer.Enabled = true;//public delegate void ElapsedEventHandler(object sender, ElapsedEventArgs e); //public event ElapsedEventHandler Elapsed;//+=右边 其实是一个委托对象 (委托对象匿名)myTimer.Elapsed += new ElapsedEventHandler(PrintOne);//上面与下面等价 //+=右边 其实是一个委托对象 (委托对象实名)ElapsedEventHandler WT;WT = PrintTWO;myTimer.Elapsed += WT;//上面与下面等价//匿名类型委托myTimer.Elapsed += delegate (object sender, ElapsedEventArgs e) {Console.WriteLine(3+"");};//Lambda表达式使用 上面与下面等价myTimer.Elapsed += (sender,e) => {Console.WriteLine(4 + "");};//Lambda表达式使用 上面与下面等价//可以省略 => 右边的一对大括号//()内的参数类型,要么都不写,要么都写myTimer.Elapsed += (object sender, ElapsedEventArgs e) => {Console.WriteLine(5 + "");};//每隔一秒 打印1,2,3,4,5--------------------------------------------------------------------private static void PrintOne(object sender, ElapsedEventArgs e) {Console.WriteLine(1+"");}private static void PrintTWO(object sender, ElapsedEventArgs e) {Console.WriteLine(2 + "");}
1.
自己定义一个委托,用于计算两个数的加减乘的运算,然后使用,如下:
public delegate int jisuan(int a , int b);public static void getResult(int one , int two ,jisuan js) {int result = js(one , two);Console.WriteLine(result);}
//下面要多定义三个函数,太麻烦//getResult(1,2,new jisuan(加法函数));//getResult(1,2,new jisuan(减法函数));//getResult(1,2,new jisuan(乘法函数));//下面使用Lambda表达式,不用多写三个函数//如果写return , => 右边就必须加大括号,不写return 不用加大括号//至于 =>左边的 (),只有当只有一个参数的时候,可写可不写,其余时候都要写。没有参数,则用空的()getResult(1, 2, delegate(int a, int b) {return a + b;});getResult(1,2 , (a,b) => {return a - b;});//与下面等价getResult(1, 2, (a, b) => a - b);getResult(1, 2, (int a, int b) => {return a*b;});//与下面等价getResult(1, 2, (int a, int b) => a * b);//用法与下面等价jisuan addjs = (a,b) => a+b ;jisuan mutijs = (int a, int b) => a* b ;int result_add = addjs(1,2);int result_muti = mutijs(1,2);