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);