您的位置:首页 > 编程语言 > C#

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: