委托 主要用途 就是 通知 调用者.
具体
class classA dim B1 as new ClassB end class |
Class classB sub 方法1() if xx then 全局变量1= 1 else if yy then 全局变量1 = 2 else
end if end sub end class |
这里 在 ClassA 中 声明了一个ClassB的实例B1(实例 就是 真的在内存中 给它划了了一块地方--给房卡了,未实例 就是 预定了房间,但还没拿到房卡 ).
这时,classA执行 B1.方法1 ,更改了 全局变量1, 假设 全局变量 变成 2 以后 A 要干一件事情1,
那么 方案1: A 可以 通过 查询 全局变量1 来确定 是否干事情1.
方案2: B 通知 A 我这里 的 变量变成2了.
显然 通过 方案2 更方便 更高效,因为 只有 变量变成2 它才 通知A
再看 委托 实现的 过程.
如果大家不理解 那么 把 委托类型 先理解成 vb6 中 type 类型,vb.net 的 structure 类型. 自定义数据类型 就好理解了
1: 在B类里面, 先 自定义 一个类型
structure 自定义
dim s1 as string
dim s2 as string
end structure
deligate sub 委托类型 ( str as string)
2: 声明一个 自定义类型的 变量
dim 自1 as 自定义
dim 委1 as 委托类型
3: 调用
在A类里面 声明 B1
B1.自1.s1 = "名字"
B1.自1.S2 = "年龄"
B1.委1 = addressof 函数名
=================================
到这里 大家应该明白了. 为什么 委托 要先声明,其实 它就是 自定义函数结构类型
而 委托 保存的 是 一个 函数的 地址.
通过这个地址,可把处理 转到 调用者A 那里,A可以自己处理 出现的情况.
总结: 被调用者B 可以通过 委托,反向 (通知)调用 A中的函数处理相关的事情.