.NET Core 实战 [No.71] 封装事件
事件(event
)是类型中的一种成员对象,它是委托(delegate
)类型。主要是运用了委托可以绑定一个或多个方法的特点。关于链式委托可以参考一下这篇博客。
声明事件需要用到 event 关键字,自定义 add 和 remove 访问器方法。
定义一个委托,用来作为事件类型。
csharpnamespace EventSample { public class Delegates { public delegate void DemoEventDelegate(object obj, int count); } }
1
2
3
4
5
6
7声明一个测试类,并包含事件成员。
csharpusing static EventSample.Delegates; namespace EventSample { public class Test { DemoEventDelegate _myEvent; public event DemoEventDelegate Worked { add { if (value != null) { _myEvent += value; } } remove { _myEvent -= value; } } private int c = 0; public void Run() { _myEvent?.Invoke(this, ++c); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30实例化测试类,绑定事件并运行。
csharpTest t = new Test(); t.Worked += (k, f) => Console.WriteLine($"你已调用了 {f} 次实例。"); t.Run(); // 你已调用了 1 次实例。 t.Run(); // 你已调用了 2 次实例。 t.Run(); // 你已调用了 3 次实例。 t.Run(); // 你已调用了 4 次实例。 t.Run(); // 你已调用了 5 次实例。
1
2
3
4
5
6
7
8
参考:《.NET Core 实战:手把手教你掌握 380 个精彩案例》 -- 周家安 著