C#的delegate和event关键字

delegate

delegate是用来声明“函数指针”的关键词。具有以下特点:

定义方式:变量语义

public delegate void Trigger();

实例化方式:类语义

//...
var trigger1 = new Trigger(PrintA);
var trigger2 = new Trigger(PrintB);
//...
public void PrintA() => Console.WriteLine("A");
public void PrintB() => Console.WriteLine("B");

运算方式:变量语义
运算指:把两个函数指针按照前后调用顺序结合成新的指针。

var trigger3 = trigger1 + trigger2;
trigger3();

输出

A
B

event

event是专门用于修饰delegate变量的修饰词。即,可有如下两种方式声明一个delegate变量

public event Trigger trigger4;
public Trigger trigger5;

event修饰过的delegate有如下几种限定:

  • trigger4只能定义在类中,不能定义在类外部。trigger5则可以。
  • 假设trigger4定义在类A中,只有A内部的函数能激发trigger4,A外部的指令没有权限激发。而trigger5没有这个限制。参考这里
  • 假设trigger4定义在类A中,A外部的指令无法给trigger4赋值=,只能注册+=或注销-=函数指针。而trigger5没有这个限制。参考这里

 

给TA充电
共{{data.count}}人
人已充电
编程

C#的成员权限限定词

2021-12-16 11:59:53

编程

Node.js express服务器的设计哲学

2021-12-16 12:11:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索