c# 委托、事件、lambda表达式
2015-09-22 23:40
471 查看
今天培训对委托和事件这两部分的内容,不是很能理解,回来在网上查了查,觉得这个解释比较形象,特贴如下:
要讲事件,必然要讲到委托(delegate)。它们之间的关系可以通过一个浅显的比方来说明,这个比方可能不是十分恰当。比如你要租一个房屋,这是一个事件,那么委托就是房屋
租赁中介,当你把租房子的消息告知中介后,中介就会产生出一套符合你要求的房屋租赁方案来。再由中介执行这套方案,你便租得了这个房屋,即事件被处理了。当然你也可以
不通过中介,直接找房东,但如果没有互联网等工具,你如何得到谁出租房屋的信息?
1
class MathsOperations
2
{
3
public static double MultiplyBy2( double value )
4
{
5
return value * 2;
6
}
7
}
有了这样一个方法,我们就可以实例化一个委托了:
MathsOp operation = new MathsOp( MathsOperations.MultiplyBy2 );
在实例化一个委托时,要给它一个参数,这个参数就是委托执行的方法,它可以是静态方法,也可以是实例方法(这一点有别于函数指针,函数指针只能调用静态方法),如:
MathsOp operation = new MathsOp( new Class1().Method1 );
在实例化完一个委托之后,就可以用这个委托来调用方法了:
double result = operation( 1.23 );
namespace Vczx.ProCSharp.Exc
2
{
3
delegate double MathsOp( double x );
4
class Start
5
{
6
public class MyDelegate
7
{
8
public static double MultiplyBy2( double x )
9
{
10
return x * 2;
11
}
12
}
13
[STAThread]
14
static void Main(string[] args)
15
{
16
MathsOp operation = new MathsOp( MyDelegate.MultiplyBy2 );
17
double x = 1.23;
18
double result = operation( x );
19
Console.WriteLine( "{0} multiply by 2 is {1}", x, result );
20
Console.Read();
21
}
22
}
23
}
要讲事件,必然要讲到委托(delegate)。它们之间的关系可以通过一个浅显的比方来说明,这个比方可能不是十分恰当。比如你要租一个房屋,这是一个事件,那么委托就是房屋
租赁中介,当你把租房子的消息告知中介后,中介就会产生出一套符合你要求的房屋租赁方案来。再由中介执行这套方案,你便租得了这个房屋,即事件被处理了。当然你也可以
不通过中介,直接找房东,但如果没有互联网等工具,你如何得到谁出租房屋的信息?
1
class MathsOperations
2
{
3
public static double MultiplyBy2( double value )
4
{
5
return value * 2;
6
}
7
}
有了这样一个方法,我们就可以实例化一个委托了:
MathsOp operation = new MathsOp( MathsOperations.MultiplyBy2 );
在实例化一个委托时,要给它一个参数,这个参数就是委托执行的方法,它可以是静态方法,也可以是实例方法(这一点有别于函数指针,函数指针只能调用静态方法),如:
MathsOp operation = new MathsOp( new Class1().Method1 );
在实例化完一个委托之后,就可以用这个委托来调用方法了:
double result = operation( 1.23 );
namespace Vczx.ProCSharp.Exc
2
{
3
delegate double MathsOp( double x );
4
class Start
5
{
6
public class MyDelegate
7
{
8
public static double MultiplyBy2( double x )
9
{
10
return x * 2;
11
}
12
}
13
[STAThread]
14
static void Main(string[] args)
15
{
16
MathsOp operation = new MathsOp( MyDelegate.MultiplyBy2 );
17
double x = 1.23;
18
double result = operation( x );
19
Console.WriteLine( "{0} multiply by 2 is {1}", x, result );
20
Console.Read();
21
}
22
}
23
}
相关文章推荐
- C#项目里各个文件的含义
- No.0_Team C#
- C#压缩与解压
- C#实现文件下载的几种方式
- C#通过XML导出Excel
- c#特性加反射实现解耦
- C# list 多条件排序
- 真是服了:.EndEdit(); 如果没哟这个一句(c#更新ACCESS,datagridview无法更新第一行)
- C#中多态问题
- c#导入文件以后查看制定值
- C# 时间类型
- C#中循环获取枚举中的名称和值
- WCF Restful通过svc文件发布
- 重新学习C# 之 流控制
- C#通过“委托和事件”的方式实现进程监控并与“普通方式”对比
- C#优化记录
- C#回收机制
- C#回收机制
- C#根据当前时间获取,本周,本月,本季度等时间段
- C# 如何获取某个类型或类型实例对象的大小