16,554
社区成员
发帖
与我相关
我的任务
分享
'吧方法当参数传递时候就要用委托了。
'比如,我喊你吃饭
class george
inherits man
end class
public sub 喊吃饭(byval m as man , juyangjia obj)
end sub
'于是我程序里某处写:
sub DoSomething()
dim g as new george
dim j as new juyangjia
喊吃饭(g,j)
end sub
'然后我还要喊你洗碗,喊你擦嘴
class juyangjia
inherits man
end class
'于是我要吧刚才的方法扩展出来
sub DoSomething()
dim g as new george
dim j as new juyangjia
喊吃饭(g,j)
喊擦嘴(g,j)
喊洗碗(g,j)
end sub
'但是我发现这个方法写好后,可能会修改,于是我尝试吧相同的写在一起,比如类似的,喊吃饭,喊洗完,等操作都是一个参数man,没有返回值。那我就定义委托
public delegate sub DoWith(byval m as man,byval m1 as man)
我刚才的方法就可以修改为:
sub DoSomething(byval things as DoWith(),byval someone as man)
dim g as new george
for each thing as DoWith in things
thing(g,someone)
next
end sub
这个方法的2个参数就可以被配置了。方法就作为参数传递给DoSomething了。
我可以很方便的扩充这个方法
dim things() as DoWith = {喊吃饭,喊喝汤,喊收拾桌子,喊洗碗}
DoSomething(things,new juyangjia())