You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中Func/Action类型可选参数能否设置非Nothing默认值

问题解答

该需求完全可以实现,且支持内联编写默认值,不需要用Nothing做兜底判断。

VB.NET编译器原生支持把匹配委托签名的无状态Lambda表达式直接作为Func/Action类型可选参数的默认值,编译阶段会把这个Lambda转换成静态缓存的委托实例,运行时调用不会有空引用问题。

针对你要设置始终返回True的默认函数的场景,正确代码如下:

Private _value As Boolean

Public Sub SetValue(Optional getValue As Func(Of Boolean) = Function() True)
    _value = getValue()
End Sub

调用效果

  • 直接无参调用SetValue()时,会走默认的内联委托逻辑,_value会被赋值为True
  • 传入自定义的Func(Of Boolean)委托调用时,会执行你传入的自定义逻辑,默认值不会生效

注意点

写内联默认值的时候要保证Lambda签名和目标委托完全匹配:比如示例里的Func(Of Boolean)是无入参、返回布尔值的委托,所以内联写的Function() True不能额外加参数,返回值也必须是布尔类型,否则会直接报编译错误。


内容的提问来源于stack exchange,提问作者Thomas Drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:09:18