C#高级编程(二)

1.委托的定义和使用

C#高级编程(二)

C#高级编程(二)

C#高级编程(二)

C#高级编程(二)

C#高级编程(二)

C#高级编程(二)


C#高级编程(二)

C#高级编程(二)

C#高级编程(二)

C#高级编程(二)

通过Lambda表达式可以访问Lambda表达式块外部的变量。这是一个非常好的功能,但如果不能正确使用,也会非常危险。示例:
int somVal = 5;
Func<int,int> f = x=>x+somVal;
Console.WriteLine(f(3));//8
somVal = 7;
Console.WriteLine(f(3));//10
这个方法的结果,不但受到参数的控制,还受到somVal变量的控制,结果不可控,容易出现编程问题,用的时候要谨慎。



C#高级编程(二)

事件(event)基于委托,为委托提供了一个发布/订阅机制,我们可以说事件是一种具有特殊签名的委托。
什么是事件?
事件(Event)是类或对象向其他类或对象通知发生的事情的一种特殊签名的委托. 
事件的声明
public event 委托类型 事件名; 
事件使用event关键词来声明,他的返回类值是一个委托类型。 
通常事件的命名,以名字+Event 作为他的名称,在编码中尽量使用规范命名,增加代码可读性。




为了更加容易理解事件,我们还是以前面的动物的示例来说明,有三只动物,猫(名叫Tom),还有两只老鼠(Jerry和Jack),当猫叫的时候,触发事件(CatShout),然后两只老鼠开始逃跑(MouseRun)。接下来用代码来实现。(设计模式-观察者模式)

C#高级编程(二)


C#高级编程(二)

C#高级编程(二)

C#高级编程(二)

C#高级编程(二)