为什么我得到一个
Constant Expression Required
以下 VB.net 代码有错误吗?
Public Shared Async Function DownloadAndCountBytesAsync(url As String, Optional token As CancellationToken = New CancellationToken) As Task(Of Integer)
用 Nothing
交换 New CancellationToken
并添加
If token = Nothing Then token = New CancellationToken
该函数有效,但我不明白为什么第一个选项不起作用...
同样的事情似乎在 C# 中工作得很好
public static async Task<int> DownloadAndCountBytesAsync(string url, CancellationToken token = new CancellationToken())
最佳答案
VB 中可选参数的默认值必须在编译时已知,这意味着它必须是文字、声明的常量或Nothing
。这意味着除 String
之外的任何引用类型只能具有默认值 Nothing
。
实现你想要的方法是重载方法:
Public Shared Async Function DownloadAndCountBytesAsync(url As String) As Task(Of Integer)
Return DownloadAndCountBytesAsync(url, New CancellationToken)
End Function
Public Shared Async Function DownloadAndCountBytesAsync(url As String, token As CancellationToken) As Task(Of Integer)
'...'
End Function
关于c# - 在函数中设置可选参数需要常量表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29337364/