Vb.net 能否将委托函数作为可选参数传递?
我知道在VisualBasic中,委托函数不能包含可选参数。但是,方法可以将委托作为可选参数吗 我想做的是:Vb.net 能否将委托函数作为可选参数传递?,vb.net,parameters,delegates,optional-parameters,Vb.net,Parameters,Delegates,Optional Parameters,我知道在VisualBasic中,委托函数不能包含可选参数。但是,方法可以将委托作为可选参数吗 我想做的是: Delegate Sub MyDelegate(ByVal input As String) Sub MyDelegateDefault(ByVal input As String) 'by default do nothing' End Sub Sub MyDelegateCustom1(ByVal input As String) 'do something
Delegate Sub MyDelegate(ByVal input As String)
Sub MyDelegateDefault(ByVal input As String)
'by default do nothing'
End Sub
Sub MyDelegateCustom1(ByVal input As String)
'do something here'
End Sub
在代码的不同部分:
Sub OtherFunction(ByVal str As String, Optional ByVal delegate As MyDelegate = AddressOf MyDelegateDefault)
delegate(str)
End Sub
Sub ParentFunction()
OtherFunction("", ) '< "" as string, nothing for optional delegate parameter'
End Sub
Sub-OtherFunction(ByVal str作为字符串,可选ByVal delegate作为MyDelegate=MyDelegateDefault的地址)
代表(str)
端接头
子父函数()
OtherFunction(“,)”<“”作为字符串,可选委托参数不包含任何内容
端接头
注意最后一个函数OtherFunction
如何将可选委托作为第二个参数
这是一件事吗?委托函数可以是可选参数吗?引用类型的参数只能默认为null。将默认值更改为null,检查null条件,不要调用委托(不执行任何操作)。我是一个C#guy,但对我来说似乎完全合理。你试过了吗?它工作了吗?再想想,不,我打赌它不会工作,因为它可能是一个引用类型。您必须使用“MyDelagate=null”并检查null,如果为null则不调用它。您是正确的!将其设置为VB的null关键字Nothing可以正常工作。添加它作为答案,我将奖励它正确的一个!还感谢您正确地使用我的VB标记。