为什么我得到一个


  需要常量表达式


以下VB.net代码出错?

Public Shared Async Function DownloadAndCountBytesAsync(url As String, Optional token As CancellationToken = New CancellationToken) As Task(Of Integer)


New CancelationToken交换Nothing并添加

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/

10-11 20:35