Vb.net 能否将委托函数作为可选参数传递?

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

我知道在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 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标记。