1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class Customer { // 定义事件 public event OrderEventHandler Order; public string ? name; public float ? price; protected void onOrder(OrderEventArgs orderEventArgs) { if (Order != null ) { Order.Invoke( this , orderEventArgs); } } ...... |
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Program{ public static void Main( string [] args) { var customer = new Customer(); customer.name = "1" ; Waiter waiter = new Waiter(); customer.Order += waiter.Serve; // customer.Order.Invoke() 这样写无法编译 customer.Think(); customer.Pay(); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 事件的简明定义方式 public event OrderEventHandler Order; 而C#中事件完整的定义方式是这样: private OrderEventHandler orderEventHandler; //委托,使用private 修饰 public event OrderEventHandler Order // 事件,对委托方法进行增减 { add { this .orderEventHandler += value; } remove { this .orderEventHandler -= value; } } |
1
2
3
4
5
6
7
8
|
protected void onOrder(OrderEventArgs orderEventArgs) { if ( this .orderEventHandler != null ) { // 调用委托 this .orderEventHandler.Invoke( this , orderEventArgs); } } |
到此这篇关于C#中事件为什么只能在内部调用的文章就介绍到这了,更多相关C#事件内部调用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/cavaliers20160620/archive/2021/11/26/15605758.html